person<worker> people (w);
我有一个person
班级,一个worker
班级,我想从person
班级创建人物对象。
//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).
我究竟做错了什么?
您的构造函数采用aworker
未定义。您只有标题,没有定义。这导致错误
我在类声明中添加了如下定义:
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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句