2014-05-11 168 views
0

我創建了一個帶有構造函數的類,該構造函數接受一個int來確定該對象所具有的鏈表的大小。我遇到的問題是我需要能夠調用這個構造函數,當這個對象被實例化爲另一個類的私有成員。所以基本上:在另一個類中使用對象的構造函數

class A { 
public: 
    A(); 
    A(int size); 
}; 

class B { 
    const int size = // any number > 0 
private: 
    A a(size); 
}; 

我得到這個錯誤:

constant "B::size" is not a type name

我試着在網上搜索,但我不能在這個具體問題來了。這可能是我努力正確地說出這個問題......這是一個我還沒有看到的奇怪問題。任何幫助表示讚賞!

+0

你聲明的方法,但你還沒有實現它們。實施在哪裏? – merlin2011

+0

這是一個錯誤的設計。我建議你詢問你正在試圖解決的實際問題,而不是你想到的解決方案。 – StoryTeller

+0

A的構造函數應該在B的構造函數中調用。除非使用常量,否則不能直接在頭文件中實例化。 – donutmonger

回答

3

您不能使用成員變量聲明中的參數調用構造函數。

您可以實現B的構造函數並在此處執行此操作。

B::B() : a(size) {} 
+0

謝謝!這正是我所期待的。我不知道爲什麼我沒有嘗試... – user3625087

2

你必須在B構造做,用initializer list

class B 
{ 
public: 
    B() : a(size) 
    {} 

private: 
    A a; 
    const int size = ...; 
}; 
相關問題