次のコードがコンパイルされない理由を誰かが説明できますか?少なくともg ++ 4.2.4では。
さらに興味深いことに、MEMBERをintにキャストするとコンパイルされるのはなぜですか?
#include <vector>
class Foo {
public:
static const int MEMBER = 1;
};
int main(){
vector<int> v;
v.push_back( Foo::MEMBER ); // undefined reference to `Foo::MEMBER'
v.push_back( (int) Foo::MEMBER ); // OK
return 0;
}