Я недавно начал создавать макросы и шаблоны. Я сделал приложение с использованием шаблона, в котором вы вводите два целых числа с разными типами данных, и он сообщает вам, какой из них больше. Но каждый раз, когда я выполняю код, он дает мне эту ошибку.C++ Шаблоны с несколькими параметрами
Ошибка 1 ошибка C2371: 'comp': redefinition; различные базовые типы линии: 36 Колонка: 1
и вот мой код
#include <iostream>
using namespace std;
template<typename T, typename B>
class Compare{
public:
Compare(const T& hAge1, const B& hAge2){
age1 = hAge1;
age2 = hAge2;
}
void display_result(){
if (age1 > age2){
cout << "Your age is bigger" << endl;
}
else{
cout << "Your age is smaller" << endl;
}
}
private:
T age1;
B age2;
};
int main(){
int your_age;
int someother_age;
//user interface
cout << "Enter your age: ";
cin >> your_age;
cout << "Enter some other age: ";
cin >> someother_age;
/*create instance of class Comepare*/
Compare<int,double>comp(your_age, someother_age);
comp.display_result();
//create another instance
Compare<int, int>comp(your_age, someother_age);
comp.display_result();
system("pause");
return 0;
}
Ваш пример может быть сведен к 'int main() {int a; double a;} 'или аналогичный. Это та же проблема, и это ошибка времени компиляции, а не ошибка времени выполнения. – chris
Ваш компилятор сообщает вам, в чем проблема. Он даже сообщает вам, по какой строке и какой символ переопределяется. И чтобы сделать проще, первое определение - это всего лишь несколько строк выше. ** Это не может быть проще. ** – Phil1970