#ifndef ClassTemplate_HH
#define ClassTemplate_HH
#include<iostream>
using namespace std;
template <typename T1, typename T2>
class myClass{
private:
T1 I;
T2 J;
public:
myClass(T1 a, T2 b);
void show();
};
template <typename T1, typename T2>
myClass<T1, T2>::myClass(T1 a, T2 b):I(a),J(b){}
template<typename T1, typename T2>
void myClass< T1, T2>::show(){
cout<<"I= "<<I<<", J = "<<J<<endl;
}
#define ClassTemplate_HH
#include<iostream>
using namespace std;
template <typename T1, typename T2>
class myClass{
private:
T1 I;
T2 J;
public:
myClass(T1 a, T2 b);
void show();
};
template <typename T1, typename T2>
myClass<T1, T2>::myClass(T1 a, T2 b):I(a),J(b){}
template<typename T1, typename T2>
void myClass< T1, T2>::show(){
cout<<"I= "<<I<<", J = "<<J<<endl;
}
#endif
#include <iostream>
#include "ClassTemplate.h"
using namespace std;
int main(void){
myClass<int, int> class1(3, 5);
class1.show();
myClass<int, char>class2(3, 'a');
class2.show();
myClass<double, int>class3(2.9, 10);
class3.show();
}