我有一个.cpp文件,看起来像这样:
//other code
namespace {
class C1;
class C2;
class C2{
public: static int counter;
//member functions here
};
class C1{
//other code
C2::counter = 10;
};
}
当我运行'make'时,我收到以下错误:
relocation R_386_GOTOFF against undefined symbol '(anonymous namespace)::C2::counter' can not be used when making a shared object...
我在这里错过了一些简单的东西吗?不应该为C1类提供静态int来改变它吗?此外,我正在开发这个作为Clang库的一部分。此外,如果有帮助,我可以共享Makefile。
答案 0 :(得分:1)
您错过了提供静态变量的定义。此定义必须在类外部发生,并且只允许一个定义。通常的方法是在实现文件中提供定义。
因为您是直接使用它而没有提供任何定义,所以您收到错误。