gpt4 book ai didi

未找到 C++ 默认构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:23 26 4
gpt4 key购买 nike

我在使用 Visual C++ 2010 Express 中的某些代码时遇到问题。我正在尝试创建一个具有构造函数的类,该构造函数接受具有默认值的参数。这是一个简短的程序,显示了我正在努力实现的目标:

//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 替换为 Class test(10),例如,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++ 告诉我“类 mobs::Monster 不存在默认构造函数”。这是为什么?

最佳答案

默认值属于声明,而不是定义。将 =10 移动到您的头文件中:

怪物(int hp = 10)

在实现中,你甚至不需要默认值。我通常使用:

怪物::怪物(int hp/*=10*/)

只是为了说明有一个默认值。

关于未找到 C++ 默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com