2016-11-08 33 views
2
#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

如果你正在使用字符串,你应该使用'std :: string'。 – NathanOliver

+0

由于使用C++,为什么不通过std :: string?编辑:@NathanOliver速度更快。 :-) – teroi

+0

与字符串是可能的。我已经试过,但不可能与字符数组或字符指针? – Desmond

回答

2

字符串文字的类型为const char(&)[N],可衰变成const char*

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

此外,您main应该返回int

Demo

而且,我觉得有义务重复NathanOliver和Teroi在评论中所说的话,你应该考虑使用改为。

它的类型被认为是“N常量字符阵列”,其中N,无论是字面的长度,参考§2.14.5.8[lex.string]。 (&)实际上是一个参考。字符串文字在内存中具有位置,并且重复使用相同的文字将引用相同的内存地址(在大多数编译器上,为了减小二进制文件的大小)Example

+0

第一行是不正确的。但是一个字符串文字可以分配给一个'const char *'。 – juanchopanza

+0

@juanchopanza:修订:-) – AndyG

+0

@AndyG是的我知道了..我在这种情况下使用字符串我只是想知道如何使用字符指针实现字符串,现在我得到了thnx人...但主函数,当用C++编译代码时,在C++中指定返回类型并不是强制性的,因为它会自动将主函数的返回类型设置为整数,据我所知...尝试它,它不会需要返回类型。 – Desmond

相关问题