任意のデータ型のデータを取得できる関数テンプレートを作成しましたが、コンパイル時にエラー メッセージが表示されます。
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ダブルです。
コード自体は「内部」ディレクトリで正常にコンパイルされますが、「外部」ディレクトリで上記のエラー メッセージが表示されます。後者は本質的に内部コードのラッパーです。