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

选举12

    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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以在C ++中使用非默认构造函数创建模板实例?

C ++模板构造函数默认参数

模板构造函数中的 C++ 模板参数

C++ 在模板的参数中传递模板的构造函数值

C ++无法导出高阶函数的模板参数

通过可变参数模板的C ++ 11构造函数继承

错误:离线构造函数不能具有模板参数C ++

如何在C ++中使用通用引用参数为模板类编写构造函数

C ++:如何为集合创建模板?

C ++以编程方式创建模板对象

C ++创建模板T对象的副本

如何创建模板数组-C ++

类模板构造函数可以在c ++ 20中具有冗余的模板参数列表吗

构造函数模板可以在类模板的c ++ 17参数推导中引起歧义吗

模板函数的C ++模板子类参数

C ++ 0/1参数构造函数传递给模板构造函数时未按预期进行链接

C ++-通过enable_if_t推导参数包(可变模板)构造函数和复制构造函数

C ++可变参数模板构造函数和通用构造函数

函数参数的C ++模板包

C ++可变参数模板:无法匹配函数

自C ++ 17以来,可否为构造函数提供模板参数推导,以便明确指定某些类模板参数?

C ++标准是否允许非模板类使用模板构造函数?

正确使用C ++模板模板参数

C++:在模板函数中使用模板参数作为默认参数

c ++调用模板构造函数实例化

C++ 条件模板构造函数

C++ 模板 - 找不到匹配的重载函数,无法推导出“T”的模板参数

如何在不使用C ++创建函数对象的情况下将函数指针作为模板值参数传递?

模板类上的C ++模板副本构造函数