我在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