对Stack <int> :: push(int const&amp;)的未定义引用

时间:2016-05-19 10:42:23

标签: c++

Stack是一个带有向量m_elem的模板类。矢量类型也是模板。所以在main中我试图将int推入向量,但它显示未定义的引用。不知道这是否发生了。该计划如下。

主文件

int main()
{   
    Stack<int> intStack;
    intStack.push(7);
    return EXIT_SUCCESS;
}

.h文件

template<class T>
class Stack
{
    public:
        void push(T const& elem);
    protected:
    private:
        vector<T> m_elem;
};

.cpp文件

template<class T>
void Stack<T>::push(T const& elem)
{
    m_elem.push_back(elem);
}

错误显示是

undefined reference to Stack<int>::push(int const&)

有人可以帮助我。提前感谢你。

1 个答案:

答案 0 :(得分:2)

您需要将模板的实现放在头文件中,因为它们需要内联。