我有一个简单的代码。私下里有 3 个具有模板类型的变量。公开的有3个构造函数和输入输出方法。尝试构建解决方案时 - 模板有问题。我不知道出了什么问题。
错误是:
1) E0441 отсутствует список аргументов для шаблон класса "Parallelepiped"
2) для использования класс шаблон требуется список аргументов шаблон
3) Ошибка C2133 p1: неизвестный размер
4) Ошибка C2512 Parallelepiped: нет подходящего конструктора по умолчанию
编码:
#include <iostream>
using namespace std;
template <typename T1, typename T2, typename T3>
class Parallelepiped {
private:
T1 edge_1; // специально сделал 3 шаблона для того, чтобы работать с абсолютно разными типами
T2 edge_2;
T3 edge_3;
public:
Parallelepiped() {
edge_1 = 0;
edge_2 = 0;
edge_3 = 0;
cout << "Отработал конструктор по умолчания. Ребра обнулены. Область -->> " << this << endl;
}
Parallelepiped(T1 e1, T2 e2, T3 e3) {
edge_1 = e1;
edge_2 = e2;
edge_3 = e3;
cout << "Отработал конструктор с параметрами. Область -->> " << this << endl;
}
Parallelepiped(const Parallelepiped& obj) {
edge_1 = obj.edge_1;
edge_2 = obj.edge_2;
edge_3 = obj.edge_3;
cout << "Отработал конструктор копирования. Область -->> " << this << endl;
}
void Initialization(void) {
cout << "\n---------------------------------\n";
cout << "\n\nВведите длину первого ребра параллелепипеда -->> "; cin >> edge_1;
cout << "\n\nВведите длину второго ребра параллелепипеда -->> "; cin >> edge_2;
cout << "\n\nВведите длину третьего ребра параллелепипеда -->> "; cin >> edge_3;
cout << "\n---------------------------------\n";
}
void Show(void) {
cout << "\n---------------------------------\n";
cout << "\n\nДлина первого ребра параллелепипеда -->> " << edge_1;
cout << "\n\nДлина второго ребра параллелепипеда -->> " << edge_2;
cout << "\n\nДлина третьего ребра параллелепипеда -->> " << edge_3;
cout << "\n---------------------------------\n";
}
~Parallelepiped() {
cout << "Отработал деструктор. Область -->> " << this << endl;
}
};
int main()
{
setlocale(0, "");
Parallelepiped p1;
return 0;
}
编译器根本不明白要从什么类型推断
向他解释 - 明确指定类型,因为它们不能从构造函数中推导出来。例如:
每个人都会很高兴:)