C+::请教一个关于类模板的问题
这样写没有问题:#include<iostream>usingnamespacestd;template<classT1,classT2=int>classMyTempl...
这样写没有问题:
#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 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();
}
哦,应该在类体中先声明:
class MyTemplate
{
.......
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()
{
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 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();
}
哦,应该在类体中先声明:
class MyTemplate
{
.......
void display();
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询