当我将一个对象传递给一个函数时,我得到了不希望的结果。当我通过Character
的action()函数传递Mage
时,似乎就会发生这种情况。
以下是我的代码的一些信息:
class Character {
public:
Character();
int getMaxLives() const;
int getMaxCraft() const;
protected:
maxLives;
maxCraft;
};
#include "character.h"
Character::Character () {
maxLives = 5;
MaxCraft = 10;
}
int Character::getMaxLives() const {
return maxLives;
}
int Character::getMaxCraft() const {
return maxCraft;
}
#include "character.h"
class Mage {
public:
Mage();
void action(Character c1);
};
#include "mage.h"
Mage::Mage () { ... }
void Mage::action(Character c1) {
cout << "Max Craft: " << c1.getMaxCraft() << endl;
cout << "Max Lives: " << c1.getMaxLives() << endl;
}
int main () {
Character c1;
Mage m1;
m1.action(c1);
我的输出给了我以下内容:
Max Craft:728798402(数量不尽相同)
Max Lives:5
然而,如果在我的潜水员中,我会这样做:
cout << "Max Craft: " << c1.getMaxCraft() << endl;
cout << "Max Lives: " << c1.getMaxLives() << endl;
我明白了:
Max Craft:10
Max Lives:5
有什么想法吗?
答案 0 :(得分:4)
看起来你的意思是MaxCraft = 10;
(在你的默认构造函数中)实际上是maxCraft = 10;
。正如@chris在评论中所说,看起来你正在使用一些允许隐式类型变量的(邪恶的,邪恶的)C ++扩展,因此MaxCraft = 10;
行只是定义一个名为MaxCraft
的新变量