【问题标题】:C++ class,object and return [closed]C ++类,对象和返回[关闭]
【发布时间】:2013-06-26 00:57:21
【问题描述】:

我对我的代码有几个问题,请回答。我是 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

为什么我不能制作像 Enemyenemy2 这样的第二个对象;并打印出像

这样的第二个敌人
enemy2.enemy("Blal","324","32");?  

我怎样才能实现相同的功能,但对于像 Player name:Hit Points:Damage: 这样的玩家,我怎么能问用户他的名字并在 Player name: 中输入它。

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

【问题讨论】:

  • 该程序具有未定义的行为,因为成员函数enemy() 流向函数的末尾而不返回string。将返回类型更改为void,除非有一些值要报告给调用者,在这种情况下它似乎没有。
  • 你为什么不能像 Enemyenemy2 这样制作第二个对象?

标签: c++ class object parameters return


【解决方案1】:

让我们分解一下:

我应该在敌人函数中使用 return 吗?

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

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

所以它需要一个string 和两个ints,并且应该返回一个string。但是,您不会返回任何东西!

如果我使用return如何打印出name、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() 函数或(更好的)流输出运算符 (&lt;&lt;)。

至于“我如何询问用户的姓名并在播放器名称中输入”,流提取运算符可能会很好。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-15
      • 2020-02-17
      • 1970-01-01
      • 2013-01-08
      • 2023-01-26
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多