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