class T { public: static const int STATIC_MEMBER_A = 1; static const int STATIC_MEMBER_B = 2; T(int x); private: int t; }; T::T(int x): t(x > 0? STATIC_MEMBER_A: STATIC_MEMBER_B) {} int main() {}
Error message: /tmp/cc0UEe2g.o: In function `T::T(int)': test.cpp:(.text+0x13): undefined reference to `T::STATIC_MEMBER_A' test.cpp:(.text+0x1e): undefined reference to `T::STATIC_MEMBER_B' /tmp/cc0UEe2g.o: In function `T::T(int)': test.cpp:(.text+0x43): undefined reference to `T::STATIC_MEMBER_A' test.cpp:(.text+0x4e): undefined reference to `T::STATIC_MEMBER_B' collect2: ld returned 1 exit status g++ (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) -- Summary: Linker error for static in-class members Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hoyninge at in dot tum dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35137