将字符指针作为模板类型传递

时间:2016-11-08 14:58:24

标签: c++

#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 ++代码。

1 个答案:

答案 0 :(得分:2)

字符串文字的类型为const char(&)[N] ,可以将其衰减为const char*

myclass<char,const char*>ob1('x',"Template");

此外,您的main应该返回int

Demo

此外,我觉得有必要重复NathanOliver和teroi在评论中所说的,你应该考虑改用std::string

它的类型被认为是“N const char的数组”,其中N,无论文字的长度是多少,请参阅§2.14 .5.8 [lex.string]。 (&)实际上意味着参考。字符串文字在内存中有位置,重用相同的文字将引用相同的内存地址(在大多数编译器上,为了减小二进制文件的大小)Example