自定义数据类型作为类模板的数据类型,若自定义的类缺少无参构造函数,则报错。

类模板的构造函数
template<class T>
class MyArray {
public:
    MyArray(int Capacity) {
        this->MyArr_capacity = Capacity;
        this->MyArr_Size = 0;
        this->MyArr_Ptr = new T[this->MyArr_capacity];
    }

自定义数据类型的构造函数

class Data
{
public:
    /*Data() {};*/问题代码
    Data(string person, double dev) {
        this->deviation = dev;
        this->personIndex = person;
    }

若缺少问题代码则报错。
已启动生成…
1>classTemplate_Success.cpp
1>G:\SHU\Cpp_Learning\Vs\Friend\MyArray.hpp(12,1): error C2512: “Data”: 没有合适的默认构造函数可用
1>G:\SHU\Cpp_Learning\Vs\Friend\MyArray.hpp(9): message : 在编译 类 模板 成员函数“MyArray::MyArray(int)”时
1>G:\SHU\Cpp_Learning\Vs\Friend\classTemplate_Success.cpp(64): message : 查看对正在编译的函数 模板 实例化“MyArray::MyArray(int)”的引用
1>G:\SHU\Cpp_Learning\Vs\Friend\classTemplate_Success.cpp(64): message : 查看对正在编译的 类 模板 实例化“MyArray”的引用
1>已完成生成项目“Friend.vcxproj”的操作 - 失败。

求解为什么?

问题出在模板类MyArray的第8行 this->MyArr_Ptr = new T[this->MyArr_capacity]; 这里是要定义一个Data类型的数组,此时需要实例化Data,但是没有给定Data的初始化参数,所以报错 “error C2512: “Data”: 没有合适的默认构造函数可用”

解决方案参考: