По какой-то странной причине g ++ (версии 4.5.0 и 4.5.2) не может скомпилировать этот код:
bool somefunc() {
return false;
}
class C {
public:
static const int a = 0;
static const int b = 1;
};
class myclass {
public:
int check() {
return somefunc() ? C::a : C::b;
// if(somefunc()) return C::a; else return C::b;
}
};
int main() {
myclass obj;
obj.check();
return 0;
}
Это дает мне такую ошибку:
/tmp/ccyvvTUy.o:/home/mati/test.cpp:14: undefined reference to `C::a'
/tmp/ccyvvTUy.o:/home/mati/test.cpp:14: undefined reference to `C::b'
collect2: ld returned 1 exit status
Что странно, еслиЯ заменяю проблемную строку на закомментированную строку, она прекрасно компилируется.Что-то не так с моим кодом и что-то, чего я не понимаю в C ++, или это просто ошибка в G ++?