我创建了一个函数模板,让我得到的数据用于任何数据类型,但我在编译收到错误消息:功能模板链接错误
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