我收到错误:
file.cpp:20: undefined reference to `MyClass::arr'
在这一行,我有:
#include "MyClass.hpp"
extern "C" {
void MyClass::func() {
arr = 0;
}
标题:
class MyClass {
public:
static int arr;
static void func();
}
P.S。使用-Xlinker -zmuldefs
调用gcc(4.x)以避免多重定义检查。
答案 0 :(得分:4)
这没有任何意义:
#include <MyClass.hpp>
extern "C" {
void MyClass::func() {
arr = 0;
}
写
#include <MyClass.hpp>
int MyClass::arr = 0; // needs to be instantiated to satisfy linker.
void MyClass::func()
{
arr = 0;
}
答案 1 :(得分:1)
实施
#include "MyClass.hpp"
void MyClass::func()
{
this->arr = 0;
}
头文件
class MyClass
{
public:
static int arr;
static void func();
}
答案 2 :(得分:1)
在class
语句中声明后,静态类字段也必须在单个.cpp
文件中定义。在这样的文件中你应该把:
int MyClass::arr;
顺便说一句,#include
语句只有在包含系统标题时才有<>
个括号;对于您自己的标题,您应该使用通常的双引号(""
)。