我創建了一個函數模板,讓我得到的數據用於任何數據類型,但我在編譯收到錯誤消息:功能模板鏈接錯誤
Undefined symbols for architecture i386:
"bool Json::getData<double>(double, Json&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DataType)", referenced from:
Coupon::initCoupon(int const&, Json&)in libkuapay.a(Coupon.o)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
scons: *** [kuaposgw] Error 1
scons: building terminated because of errors.
該函數聲明爲:
template < class T> static bool getData(T data, Json &jsonObject, const string &key, DataType dataType);
,並呼籲爲:
Json::getData (couponList[cpnCnt].discount, couponReader, "discount", realType);
其中couponList[cpnCnt].discount
是雙。
代碼本身在我的「內部」目錄中編譯得很好,但是我在 「外部」目錄中得到了上述錯誤信息,其中後者基本上是內部代碼的包裝。
您可以包括函數的定義?錯誤表明它有問題。 – kichik 2011-12-27 18:43:19
'ld'是鏈接器,不是編譯器。所以當它抱怨這意味着你有一個鏈接器錯誤,而不是編譯器錯誤。 – Omnifarious 2011-12-27 18:50:34