我想實現這樣的:現在如何將方法結果作爲參數傳遞給C++中的基類構造函數?
class Base
{
public:
Base(string S)
{
...
};
}
class Derived: Base
{
public:
int foo;
string bar()
{
return stringof(foo); // actually, something more complex
};
Derived(int f) : foo(f), Base(bar())
{
};
}
,這不工作,我想,是因爲巴()被調用派生構造函數foo的初始化之前。
我認爲添加一個類似bar()的靜態函數,它將foo作爲參數 - 並在初始化列表中使用它,但我想問問是否還有其他技術可以用來挖掘自己這一個...
編輯:感謝您的反饋 - 這是我將如何處理靜態功能。不知道如果靜態和非靜態函數之間的過載是太聰明瞭,但是......
class Derived: Base
{
public:
int foo;
static string bar(int f)
{
return stringof(f); // actually, something more complex
}
string bar()
{
return bar(foo);
};
Derived(int f) : Base(bar(f)) , foo(f)
{
};
}
HMM這與平普爾成語組合將是很好 – 2008-12-17 17:36:42
尼斯 - 然而的組合物中的缺點是,以暴露基方法需要「蝙蝠狀」存根的數目。 – Roddy 2008-12-17 19:26:43
真的!我想你會因爲這個原因而堅持計劃A. – 2008-12-17 21:10:45