静态常量上的c++链接错误
c++ linking error on static const
我使用的是gcc(Debian 4.4.5-8)4.4.5。使用以下代码,我得到链接错误:
/tmp/ccOeGgC9.o:在函数
A::func()':
B::CONST_B'
(.text+0x1b): undefined reference to
中(.text+0x23):未定义对"A::CONST_A"的引用
页眉:
class A {
public:
static const int CONST_A = 10;
int func();
};
class B {
public:
static const int CONST_B = 20;
};
cpp文件(存在链接错误):
int A::func() {
bool c = true;
const int a = (c == true) ? B::CONST_B : CONST_A;
}
int main() {
return 0;
}
为了修复这个错误,我必须编写cpp文件如下:
cpp文件(正在工作):
int A::func() {
bool c = true;
int a = CONST_A;
a = (c == true) ? B::CONST_B : a;
}
int main() {
return 0;
}
你能解释一下为什么我不能编译第一个代码吗?
class A {
public:
static const int CONST_A = 10;
int func();
};
像本例中的CONST_A
这样的静态成员的定义必须在类之外
像这个
class A {
public:
static const int CONST_A = 10;
int func();
};
const int A::CONST_A = 10;
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误