C++ 对静态变量c+的未定义引用+;
您好,我在以下代码中遇到未定义的引用错误:C++ 对静态变量c+的未定义引用+;,c++,static,C++,Static,您好,我在以下代码中遇到未定义的引用错误: class Helloworld{ public: static int x; void foo(); }; void Helloworld::foo(){ Helloworld::x = 10; }; 我不想要一个静态的foo()函数。如何在类的非静态方法中访问类的静态变量 我不想要一个静态的foo()函数 嗯,foo()在您的类中不是静态的,您不需要将其设置为static来访问类的static变量 您需要做的只是
class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
我不想要一个静态的foo()
函数。如何在类的非静态
方法中访问类的静态
变量
我不想要一个静态的foo()
函数
嗯,foo()
在您的类中不是静态的,您不需要将其设置为static
来访问类的static
变量
您需要做的只是为静态成员变量提供定义:
class Helloworld {
public:
static int x;
void foo();
};
int Helloworld::x = 0; // Or whatever is the most appropriate value
// for initializing x. Notice, that the
// initializer is not required: if absent,
// x will be zero-initialized.
void Helloworld::foo() {
Helloworld::x = 10;
};
代码是正确的,但不完整。类Helloworld
具有其静态数据成员x
的声明,但没有该数据成员的定义。你的源代码中有一些你需要的东西
int Helloworld::x;
或者,如果0不是合适的初始值,请添加初始值设定项。旧问题,但是
由于c++17
您可以声明静态成员内联成员并在类
的主体内实例化它们,而无需类外定义:
class Helloworld{
public:
inline static int x = 10;
void foo();
};
谢谢你,伙计。我正在实例化HelloWorld::x,但没有使用int。再次感谢。@AndyProwl我尝试了这一点,但在将x设置为0的行上出现了一个编译器错误。它说“类Helloworld”中的“foo”没有命名类型。有什么建议吗?foo()
定义末尾的@ufmike分号导致错误。可能是重复的