可能重复:
What does it mean to have an undefined reference to a static member?
我有一个静态类,如下所示:
.h文件
class c1 {
public:
static int disconnect();
private:
static bool isConnected;
};
.cpp文件
#include c1.h
int c1::disconnect()
{
c1::isConnected = false;
return 0;
}
然而,当我编译时,出现错误
undefined reference to `c1::m_isConnected'
请帮忙!
答案 0 :(得分:2)
您必须为静态类成员提供实际的对象实例。将以下内容添加到.cpp文件中:
bool c1::isConnected;
要将其初始化为特定值,请添加初始值设定项:
bool c1::isConnected = false;
(顺便说一句,C ++中的类不能是静态的。类只是类型。只有类成员可以是静态的。)
答案 1 :(得分:1)
isConnected
是一个(非静态)成员变量,如果没有它所属的实例,则不能使用它。虽然静态变量独立于任何对象而存在,但非静态成员变量仅作为该类实例的一部分存在。
您需要将isConnected
设为静态,或接受将c1
设置为isConnected
的{{1}}实例。你可能想要前者。
答案 2 :(得分:0)
头文件中的内容是声明。但是,您还需要变量的定义。正确的代码如下所示:
class c1 {
public:
static int disconnect();
private:
static bool isConnected;
};
bool c1::isConnected = false;
int c1::disconnect()
{
isConnected = false;
return 0;
}