C++静态变量和函数错误

C++ static variable and function errors

本文关键字:函数 错误 变量 静态 C++      更新时间:2023-10-16

可能重复:
对静态成员有未定义的引用意味着什么?

我有一个静态类如下:

.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'

请帮忙!

您必须为静态类成员提供一个实际的对象实例。将以下内容添加到.cpp文件中:

 bool c1::isConnected;

要将其初始化为特定值,请添加一个初始化器:

 bool c1::isConnected = false;

(顺便说一句,C++中的类不能是静态的。类只是类型。只有类成员才能是静态的(

isConnected是一个(非静态(成员变量,如果没有它所属的实例,就无法使用它。虽然静态变量独立于任何对象存在,但非静态成员变量作为该类实例的一部分存在。

您需要将isConnected设置为静态,或者接受c1的一个实例,在该实例上将isConnected设置为false。你可能想要前者。

头文件中包含的是声明。但是,您还需要一个变量的定义。正确的代码如下所示:

class c1 {
public:
    static int disconnect();
private:
    static bool isConnected;
};
bool c1::isConnected = false;
int c1::disconnect()
{
    isConnected = false;
    return 0;
}