オブジェクトを関数に渡すと、望ましくない結果が得られます。aの action() 関数Character
を介して aを渡すと発生するようです。Mage
これが私のコードの一部です:
character.h
class Character {
public:
Character();
int getMaxLives() const;
int getMaxCraft() const;
protected:
maxLives;
maxCraft;
};
キャラクター.cpp
#include "character.h"
Character::Character () {
maxLives = 5;
MaxCraft = 10;
}
int Character::getMaxLives() const {
return maxLives;
}
int Character::getMaxCraft() const {
return maxCraft;
}
mage.h
#include "character.h"
class Mage {
public:
Mage();
void action(Character c1);
};
mage.cpp
#include "mage.h"
Mage::Mage () { ... }
void Mage::action(Character c1) {
cout << "Max Craft: " << c1.getMaxCraft() << endl;
cout << "Max Lives: " << c1.getMaxLives() << endl;
}
ドライバー.cpp
int main () {
Character c1;
Mage m1;
m1.action(c1);
私の出力は私に次のことを与えます:
マックスクラフト:728798402(番号は変動します)
最大命: 5
ただし、ダイバーの場合は、次のことを行います。
cout << "Max Craft: " << c1.getMaxCraft() << endl;
cout << "Max Lives: " << c1.getMaxLives() << endl;
私は得る:
最大クラフト: 10
最大命: 5
何か案は?