2016-01-13 55 views
1

這將是一個基本的問題,但希望有人可以幫助我..構造函數採取字符指針

我有這樣的功能;

void createInstance() 
{ 
    MyClass m_Class; 
    m_Class(25, "Roger")(32, "Pete")(56, "Haley")(89, "Tom"); 
} 

現在在myClass:

class MyClass 
{ 
    MyClass(); 
    MyClass(int, const char&); // Gets ERROR here... 
}; 

我想在MyClass的可以從的createInstance功能拍攝線#2寫一個構造函數。

我該怎麼做?

回答

2

強制性:你爲什麼要這樣做,你想做什麼?就編譯而言,你必須明白它的寫法,你的對象已經被構建。第二行根本不是構造函數調用,而是在你的對象上調用operator(),這是你沒有定義的。你想創建多個對象,還是希望能夠靈活地將這些int,string對的多個傳遞給對象後期構造?如果你想要做的是後者,你可以這樣做:

class MyClass 
{ 
    MyClass(); 

    MyClass& operator()(int x, const char* str) { 
     // Do stuff with x and str 
     return *this; 
    } 
}; 

什麼是聰明這個是運營商()返回對象本身,這當然有運營商(參考),這樣你就可以再次調用它,它再次返回對象的引用,依此類推。這是一個工作示例:http://coliru.stacked-crooked.com/a/a0873be09770afd2

0

這樣子:

MyClass(int,const char *);

+0

給出錯誤 - 錯誤:無法匹配調用'(MyClass)(int,const char [4])'| –

+0

獲取錯誤 - 錯誤:無法匹配調用'(MyClass)(int,const char [4])' –