我想请教一个C++模板类问题
这样写没有问题:
#include<iostream>
using namespace std;
template<class T1,class T2=int>
class MyTemplate
{
private:
T1 t1;
T2 t2;
public:
MyTemplate(T1 tt1,T2 tt2)
{
t1=tt1;
t2=tt2;
}
void display()
{
cout<<t1<<" "<<t2<<endl;
}
};
void main()
{
int a=1;
double b=2.2;
MyTemplate<int,double> mt1(a,b);
MyTemplate<int> mt2(a,b);
mt1.display();
mt2.display();
}
不过我想把void display()写在类体外,写成以下这样,不过编译没有通过,请问,应该如何修改:
#include<iostream>
using namespace std;
template<class T1,class T2=int>
class MyTemplate
{
private:
T1 t1;
T2 t2;
public:
MyTemplate(T1 tt1,T2 tt2)
{
t1=tt1;
t2=tt2;
}
void display();
};
void MyTemplate::display()
{
cout<<t1<<" "<<t2<<endl;
}
void main()
{
int a=1;
double b=2.2;
MyTemplate<int,double> mt1(a,b);
MyTemplate<int> mt2(a,b);
mt1.display();
mt2.display();
}
[解决办法]
#include<iostream>
using namespace std;
template<class T1,class T2=int>
class MyTemplate
{
private:
T1 t1;
T2 t2;
public:
MyTemplate(T1 tt1,T2 tt2)
{
t1=tt1;
t2=tt2;
}
void display();
};
template<class T1,class T2>//模板类外定义函数也要表示出是模板,但默认类型只出现一次
void MyTemplate<T1,T2>::display()//这里你模板类的作用域没写对
{
cout<<t1<<" "<<t2<<endl;
}
void main()
{
int a=1;
double b=2.2;
MyTemplate<int,double> mt1(a,b);
MyTemplate<int> mt2(a,b);
mt1.display();
mt2.display();
}
已改正
[解决办法]