c – 可以在类中使用extern变量吗?

在C中,是否可以将类成员变量标记为extern?

我能有……吗

class Foo {
    public:
        extern string A;
};

字符串A是在我包含的另一个头文件中定义的?

最佳答案 如果我理解你的问题和评论,你正在寻找
static data members

将该字段声明为static:

// with_static.hpp
struct with_static
{
    static vector<string> static_vector;
};

仅在一个TU(±.cpp文件)中定义它:

// with_static.cpp
vector<string> with_static::static_vector{"World"};

然后你可以使用它.请注意,您可以使用class :: field和object.field表示法,它们都引用同一个对象:

with_static::static_vector.push_back("World");

with_static foo, bar;
foo.static_vector[0] = "Hello";

cout << bar.static_vector[0] << ", " << with_static::static_vector[1] << endl;

以上应该打印Hello,World

live demo

点赞