C++类、对象和返回

C++ class,object and return

本文关键字:返回 对象 C++      更新时间:2023-10-16

我对我的代码有一些问题,请回答。我是C++的初学者
我制作了这个类:

#include <iostream>
#include <string>
using namespace std;
class Enemy{
    public:
        string enemy(string n,int h,int d){
            name = n;
            hp = h;
            dmg = d;
            cout << "Enemy name: " << n << "   ";
            cout << "Hit Points: " << h << "   ";
            cout << "Damage: " << d;
        }
    private:
        string name;
        int hp;
        int dmg;
};
int main(){
    Enemy enemy1;
    enemy1.enemy("Wolf",10,2);
}

当我构建并运行它时,我会得到这个:

Enemy name: Wolf   Hit Points: 10   Damage: 2  

我应该在enemy function中使用return吗?如果我使用return如何打印出name,hp and dmg

为什么我不能制作像Enemy enemy2这样的第二个对象;并打印出类似的第二个敌人

enemy2.enemy("Blal","324","32");?  

如果不是像Playername:Hit Points:Damage:这样的玩家,我如何制作同样的功能,以及我如何询问用户的姓名并将其输入到Playername:中。

我知道这些问题很愚蠢,但请回答并为我糟糕的英语感到抱歉。

让我们把它分解一下:

我应该在敌方功能中使用return吗?

我相信你的编译器已经警告过你了。为什么?让我们看看enemy函数签名:

string enemy(string n,int h,int d){

因此,它需要一个string和两个int,并且应该返回一个string。不过你什么都不回!

如果我使用return如何打印出名称、hp和dmg?

这与您在函数中所做的完全相同,只是您需要将所有内容转换为一个字符串。使用stringstream最简单。

// remember to
#include <sstream>
string enemy(string n,int h,int d) {
   // initialize variables
   // ...
   std::stringstream s;
   s << "Enemy name: " << n << "   ";
   s << "Hit Points: " << h << "   ";
   s << "Damage: " << d;
   // here we return the data
   return s.str();
}

然而,这不是正确的方法。看起来你正在尝试创建一个构造函数。我不想为你写所有的代码,但我希望你:

  1. 阅读构造函数、它们是什么以及如何编写它们
  2. enemy函数拆分为两部分:初始化和打印
  3. 将第一部分放入构造函数中,将第二部分放入tostring()函数或(更好)流输出运算符<<)中

至于"我怎么能向用户询问他的名字并将其输入到播放器名称中",流提取操作符可能会很好。

除非您想返回数据,否则不需要使用返回-因此在这种情况下,要么将返回类型设置为void,要么将函数更新为构造函数(这可能是您想要的)。