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

pass character pointer as template type

本文关键字:类型 字符 指针      更新时间:2023-10-16
#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++代码。

字符串字面值的类型为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]。(&)实际上是指引用。字符串字面值在内存中有位置,重用相同的字面值将指向相同的内存地址(在大多数编译器上,为了减少二进制文件的大小)。