2016-11-08 70 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