请考虑以下迷你示例
// CFoo.hpp
class CFoo{
private:
static const double VPI = 0.5;
public:
double getVpi();
};
// CFoo.cpp
#include "CFoo.hpp"
double CFoo::getVpi(){
double x = -VPI;
return x;
}
// main.cpp
#include "CFoo.hpp"
int main(){
CFoo aFoo();
return 0;
}
使用 gcc 4.5.1 版本的程序会产生错误CFoo.cpp: undefined reference to CFoo::VPI
。错误不会发生,如果
- VPI 未被否定
- 否定写为
double x = -1 * VPI;
- CFoo 类的声明和定义发生在同一个文件中
你知道这个错误的原因吗?