C++: gcc 链接时找不到静态成员
我收到错误:
file.cpp:20: undefined reference to `MyClass::arr'
在这一行,我有:
#include "MyClass.hpp"
extern "C" {
void MyClass::func() {
arr = 0;
}
在 header:
class MyClass {
public:
static int arr;
static void func();
}
PS gcc (4.x) is call with: -Xlinker -zmuldefs
以避免多重定义检查。
I get the error:
file.cpp:20: undefined reference to `MyClass::arr'
At this line, I have:
#include "MyClass.hpp"
extern "C" {
void MyClass::func() {
arr = 0;
}
At header:
class MyClass {
public:
static int arr;
static void func();
}
P.S. gcc (4.x) is called with: -Xlinker -zmuldefs
to avoid multiple definition checking.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这没有意义:
写
This makes no sense :
write
实现
头文件
implementation
header file
静态类字段在
class
语句中声明之后,还必须在单个.cpp
文件中定义。在这样的文件中,您应该输入:顺便说一下,仅当您包含系统标头时,
#include
语句才具有<>
括号;对于您自己的标头,您应该使用通常的双引号 (""
)。Static class fields, after being declared in the
class
statement, must be also defined in a single.cpp
file. In such file you should put:By the way, the
#include
statements have<>
brackets only when you're including system headers; for your own headers you should use the usual double quotes (""
).