我在Visual C++ 2010 Express中遇到了一些代碼問題。我試圖讓一個具有接受具有默認值的參數的構造函數的類。下面是一個簡短的程序,顯示了我想實現的目標:未找到C++默認構造函數
//Class declaration
class Class {
private:
int mValue;
public:
Class(int);
int GetValue();
};
Class::Class(int val=1) : mValue(val)
{
}
int Class::GetValue()
{
return mValue;
}
int main()
{
Class test;
cout << test.GetValue() << endl;
}
現在,這似乎工作正常。如果我用Class test(10)
代替Class test
,比如說,mValue
被正確初始化。
但是,在第二個程序中,我試圖做同樣的事情。我有這樣定義的類:
namespace mobs {
Class Monster {
private:
mHitPoints;
public:
Monster(int);
int GetHitPoints() const;
};
}
用的功能的實現是這樣的:
namespace mobs {
Monster::Monster(int hp=10) : mHitPoints(hp)
{
}
int Monster::GetHitPoints() const
{
return mHitPoints;
}
}
但是當我嘗試聲明一個類,並使用GetHitPoints()
功能,像這樣:
mobs::Monster testmonster;
cout << testmonster.GetHitPoints() << endl;
Visual C++告訴我「沒有默認構造函數存在類怪物::怪物」。爲什麼是這樣?
http://stackoverflow.com/questions/1440222/constructors-with-default-parameters-in -header-files – Mat 2012-07-08 19:57:13