我有以下代码:
template<typename T>
void addGeneric(const T & val) {
struct Item
{
Item();
T & value;
~Item();
};
Item* item = new Item; // Error appear on this line
item->value = val;
void* ptr = item;
array.push_back(ptr);
};
我收到以下错误:
错误:未定义引用`void GenericArray :: addGeneric(std :: string const&amp;):: Item :: Item()&#39;
我不明白为什么我会得到它,或者我如何解决它。救救我!
答案 0 :(得分:0)
因为你确实没有定义它们,你只是声明有一个构造函数和一个析构函数,但是你没有实现/定义它们。
无论如何,你的例子可能没有构造函数/析构函数; - )
template<typename T>
void addGeneric(const T & val) {
struct Item
{
Item(){
/* do something constructive here...or simply ommit the entire constructor */
}
T & value;
~Item(){
/* destroy what you have created! ...or simply ommit the entire destructor too */
}
};
Item* item = new Item; // Error appear on this line
item->value = val;
void* ptr = item;
array.push_back(ptr);
};