Я создал шаблон функции, которая позволяет мне получить данные для любого типа данных, но я получаю сообщение об ошибке при компиляциишаблона функции связывания ошибка
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
'ld' - это компоновщик, а не компилятор. Поэтому, когда он жалуется, это означает, что у вас есть ошибка компоновщика, а не ошибка компилятора. – Omnifarious