c++ 函数返回空白

yzxexxkh  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(86)

我试图在c++中测试非常基本的OO,但我遇到了一个问题。我写了以下类:
演员职业:

#pragma once
#include <string>
class Actor
{
private:
    void setName(std::string inputName);

public:
    std::string name{};
    
    Actor(std::string inputName = "Actor");

    std::string getName();

};

个字符
字符类

#pragma once
#include "Actor.h"

class Character : public Actor
{
public:
    int maxHealth{};
    int currentHealth{};

    Character(std::string inputName = "Character", int inputHealth = 100);
    int getCurrentHealth();

};
#include "Character.h"

Character::Character(std::string inputName, int inputHealth) : 
    Actor{inputName}, maxHealth{inputHealth}, currentHealth{inputHealth}
{

}

int Character::getCurrentHealth()
{
    return currentHealth;
}

的字符串
玩家等级

#pragma once
#include "Character.h"
class Player : public Character
{
public:
    Player();

};
#include "Player.h"

Player::Player():
    Character{"Player", 200}
{
    
}
#include <iostream>
#include "Player.h"

int main()
{
    Player a{};

    std::cout << "Actor name is: " + a.getName() << std::endl;
    std::cout << "Player health is: " + a.getCurrentHealth() << std::endl;
    

    return 0;
}

在本例中,a.getName()正常打印,返回字符串“Player”。但是,a.getCurrentHealth不会打印。不仅仅是数值,而是整个句子“玩家健康是:”不是打印。知道发生了什么吗

dffbzjpn

dffbzjpn1#

C++中没有将整数加到字符串的操作。使用<<而不是+来获得您想要的输出。

std::cout << "Player health is: " << a.getCurrentHealth() << std::endl;

字符串
你的代码正在做的是 * 指针算术 *。字符串字面量被解释为一个char指针,然后将健康值添加到该指针,并将结果地址(可能指向任何地方)打印出来,就好像它指向一个C风格的字符串一样。

相关问题