C++静态变量和函数错误
C++ static variable and function errors
可能重复:
对静态成员有未定义的引用意味着什么?
我有一个静态类如下:
.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;
}
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误