请把这段代码拆开,让它变得复杂和难以阅读,我宁愿把困难的方法学一次,也不愿以错误的方式多次学习同样的东西。
基类如下:
class baseMob{
private:
int _healthMax;
int _healthCurrent;
int _manaMax;
int _manaCurrent;
int _experiencePoints;
public:
//Set max Hp
void setHealthMax(int);
//Get max Hp
int getHealthMax();
//Set Current Hp
void setCurrentHealth(int);
//Get Current Health
int getCurrentHealth();
//Set Max Mana
void setMaxMana(int);
//Get Max Mana
int getMaxMana();
//Set Current Mana
void setCurrentMana(int);
//Get Current Mana
int getCurrentMana();
//getMob Exp on kill
int getExperiencePoints();
//Set mob Exp points
void setExperiencePoints(int);
//leaving out the member functions for space conservation
};
我试图创建的个体生物是绿色粘液,我正试图通过我创建的默认构造函数创建它...
class greenSlime: private baseMob{
public:
greenSlime(){
setHealthMax(100);
setMaxMana(100);
setCurrentHealth(100);
setCurrentMana(100);
setExperiencePoints(150);
}
};
我的主要功能现在看起来像这样:
greenSlime slime();
for(; slime.getCurrentHealth() >= 0; slime.setCurrentHealth(-1)){
cout << "The current health of the slime is: " << slime.getCurrentHealth() << endl;
if (slime.getCurrentHealth() <= 0 ){
cout << "Player is awarded with: " << slime.getExperiencePoints() << " Experience. ";
}
}
如果有人想撕毁它并让我看起来像个 SCSS ,我将非常感谢您的帮助。
我目前遇到的错误是:
Project1.cpp:107: error: request for member getCurrentHealth' in
slime', is non-class type `greenSlime ()()'
以及其他相同类型的错误。
Tl;Dr:类实现不起作用,当我可能已经发布了大约 1/10 并且仍然有意义时发布了我的所有源代码,并且很想有人告诉我为什么它不起作用以及如何我很糟糕。
最佳答案
问题是编译器认为 slime 声明行是另一种类型的预声明,因为 greenSlime 没有带参数的构造函数。
你可以通过不在 slime 后面加上括号来解决这个问题。
// greenSlime slime();
greenSlime slime;
对于您不理解的奇怪错误,我可以提供绝对最佳的建议。举一个较小的问题示例可以更容易地发现问题所在。
这是我为了测试而写的。
struct Foo {
Foo() {}
void bar() {}
};
int main(int argc, char ** argv) {
Foo foo;
foo.bar();
return 0;
}
关于c++ - 调试——类/对象的东西,菜鸟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751155/