C ++无法使用模板参数创建模板构造函数

C++ unable to create template constructor with template parameter


    person<worker> people (w);

我有 person class 和 worker class,我想从 person class 创建人物对象。

//person.cpp
template <class T>
person<T>::~person()
{
    //dtor
}

//person.h
template <class T>
class person
{
    public:
        person();
        person(T a);
        virtual ~person();

};

我明白了

undefined reference to `person<worker>::person(worker).

我做错了什么?

未定义采用 worker 的构造函数。您只有 header,没有定义。这导致错误

我在 class 声明中添加了这样的定义:

person(T a) { x = a; };

这是编译和执行的最小代码(根据您所做的):

#include <iostream>
class worker
{
 private:
    int a;
  public:
    worker(){}
    ~worker() {}
};

//person.h
template <class T>
class person
{
    public:
        person();
        person(T a) { x = a; };
        virtual ~person();

    private:
        T x;

};

//person.cpp
template <class T>
person<T>::~person()
{
    //dtor
}

int main()
{
    worker w;
    person<worker> people(w);

}