Отсутствует список аргументов для шаблон класса
У меня есть простенький код. В привате 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;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Компилятор совершенно не понимает, какие типы вывести из
Parallelepiped p1;
Поясните ему - укажите типы явно, раз их нельзя вывести из конструктораа. Например:
Parallelepiped<double,double,double> p1;
и все будут довольны :)