2016-07-07 57 views
-1

如果我有2個類,一個具有自定義構造函數,另一個具有第一個類的實例。如何使用自定義構造函數創建該實例。如何在另一個類中調用自定義構造函數

例如:

class A 
{ 
public: 
    A(std::string input); 
}; 

BH

Class B 
{ 
public: 
    A a("Greetings"); 
}; 

這將無法正常工作,它給出了錯誤 「預期類型說明符」 的字符串本身,和每當我使用B類中的A類成員時,它就會說「表達必須具有類別類型」

我假設這意味着我需要使它

A a(std::string words); 

但我不知道我會在哪裏或如何定義字符串應該是什麼。

+6

'A a {「Greetings」};'會工作。你真正需要的是[這些]之一(http://stackoverflow.com/q/388242/241631)。 – Praetorian

回答

2

使用構造的初始化列表

class A 
{ 
public: 
    A (std::string input); 
}; 

class B 
{ 
    A a; 
public: 
    B (std::string s) : a (s) {}; //This calls the constructor of A on 'a' 
}; 

此外,在C++ 11可以使用統一初始化語法

class B 
{ 
    A a {"Greetings"}. 
    ... 
}; 

但有了這個,你只能使用編譯時常量調用構造函數。

相關問題