下面的代碼給出的gcc 4.7的誤差在我class.cpp:未定義的引用與靜態常量
auto TLV1 = std::make_pair(UNSIGNEDCHAR_STATIC_CONST, Value1);
auto TLV2 = std::make_pair(UNSIGNEDCHAR_STATIC_CONST, Value2);
UNSIGNEDCHAR_STATIC_CONST
是在類中定義static const unsigned char
,值是vector<unsigned char>
定義函數
編輯:在我class.h:
static const unsigned char UNSIGNEDCHAR_STATIC_CONST = 0x4F;
鏈接器錯誤:
undefined reference to `foo::UNSIGNEDCHAR_STATIC_CONST'
undefined reference to `foo::UNSIGNEDCHAR_STATIC_CONST'
下面的代碼不會重現錯誤:
unsigned char t = UNSIGNEDCHAR_STATIC_CONST;
auto TLV1 = std::make_pair(t, Value1);
auto TLV2 = std::make_pair(t, Value2);
編輯: 我做了它的鑄造工作好,謝謝尼爾Krik:
auto TLV1 = std::make_pair(static_cast(UNSIGNEDCHAR_STATIC_CONST), Value1);
或弗拉德解決方案,在cpp文件中:
const unsigned char foo::UNSIGNEDCHAR_STATIC_CONST= 0x4F
我不知道,這就是爲什麼我問... – MokaT 2014-09-29 09:27:01
有在C++的問題,你必須在一個類定義一個靜態常量,並嘗試與需要參照的功能,用它。這可能會以某種方式在C++ 11中解決,可能使用'constexpr',我不知道。試試'std :: make_pair((unsigned char)(UNSIGNEDCHAR_STATIC_CONST),Value1);' – 2014-09-29 09:27:39
'UNSIGNEDCHAR_STATIC_CONST'聲明的完整代碼行是什麼? – Niall 2014-09-29 09:29:28