آیا این کد خراب است یا اشکالی در ++ g وجود دارد؟

به دلایلی عجیب 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 ++ است؟

21
задан razlebe 11 July 2011 в 18:24
поделиться