未定义的本地结构构造函数的引用

时间:2015-08-24 19:36:36

标签: templates struct

我有以下代码:

    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;

我不明白为什么我会得到它,或者我如何解决它。救救我!

1 个答案:

答案 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);
};