0

我有一个看起来像这样的 .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...

我在这里错过了一些简单的东西吗?静态 int 不应该可用于 C1 类来更改它吗?另外,我正在开发它作为 Clang 库的一部分。另外,如果有帮助,我可以分享 Makefile。

4

1 回答 1

1

您错过了提供静态变量的定义。这个定义必须出现在类之外,并且只允许一个定义。通常的方法是在实现文件中提供定义。

因为您直接使用它,而没有为其提供任何定义,所以您会收到错误消息。

于 2013-09-18T04:49:59.043 回答