#include<iostream>
using namespace std;
template<class t1,class t2>
class myclass
{
t1 i;
t2 j;
public :
myclass(t1 x,t2 y)
{
i = x;
j = y;
}
void show()
{
cout<<"i = "<<i<<" j = "<<j<<endl;
}
};
main()
{
myclass<int,double> ob(10,15.2);
myclass<char,char*>ob1('x',"Template");
ob.show();
ob1.show();
}
我想将第二个模板对象的类型设置为一个,以便我可以在构造函数中传递一个字符数组,它应该是什么类型?
请参阅 - 我使用GNU GCC编译器集中的g ++编译器来编译我的c ++代码。
答案 0 :(得分:2)
字符串文字的类型为const char(&)[N]
†,可以将其衰减为const char*
:
myclass<char,const char*>ob1('x',"Template");
此外,您的main
应该返回int
此外,我觉得有必要重复NathanOliver和teroi在评论中所说的,你应该考虑改用std::string
。
† 它的类型被认为是“N
const char的数组”,其中N
,无论文字的长度是多少,请参阅§2.14 .5.8 [lex.string]。 (&)
实际上意味着参考。字符串文字在内存中有位置,重用相同的文字将引用相同的内存地址(在大多数编译器上,为了减小二进制文件的大小)Example。