【发布时间】:2013-06-06 08:41:14
【问题描述】:
我有一个仅供本地使用的类(即,它的副本只是它定义的 c++ 文件)
class A {
public:
static const int MY_CONST = 5;
};
void fun( int b ) {
int j = A::MY_CONST; // no problem
int k = std::min<int>( A::MY_CONST, b ); // link error:
// undefined reference to `A::MY_CONST`
}
所有代码都位于同一个 c++ 文件中。在windows上使用VS编译时,完全没有问题。
但是,在 Linux 上编译时,我只收到第二条语句的 undefined reference 错误。
有什么建议吗?
【问题讨论】:
-
不要指定函数模板参数。只需
std::min(A::MY_CONST, b),它更干净。 -
@KerrekSB - 一般来说你是对的。我从我的代码中修改了这个例子。
b不是int,因此我需要明确指定模板参数。 -
你是如何构建这个的?我无法重现 gcc 4.7.3 的问题。
-
编译得很好:ideone.com/2LlrHt
-
"我从我的代码中修改了这个例子。" => 但是您是否至少检查过您的发布的代码确实收到了发布的错误? (我问是因为我无法重现错误。)
标签: c++ linker static-members