gpt4 book ai didi

c++以错误的方式传递值?

转载 作者:行者123 更新时间:2023-11-27 23:19:58 25 4
gpt4 key购买 nike

当我将一个对象传递给一个函数时,我得到了不想要的结果。当我通过 Mage 的 action() 函数传递 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;
}

法师.h

    #include "character.h"

class Mage {
public:
Mage();
void action(Character c1);
};

法师.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);

我的输出给了我以下内容:

Max Craft:728798402(数量不同)

最大生命:5


但是,如果在我的潜水员中,我会:

cout << "Max Craft: " << c1.getMaxCraft() << endl;
cout << "Max Lives: " << c1.getMaxLives() << endl;

我得到:

最大工艺:10

最大生命:5

有什么想法吗?

最佳答案

看起来您的意思是 MaxCraft = 10;(在您的默认构造函数中)实际上是 maxCraft = 10;。正如@chris 在评论中所说,您似乎正在使用一些允许隐式类型变量的(邪恶的,邪恶的)C++ 扩展,因此 MaxCraft = 10; 行只是定义了一个新变量名为 MaxCraft

关于c++以错误的方式传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13781505/

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