C ++类,对象和返回

时间:2013-06-28 09:30:28

标签: c++ class object parameters return

关于我的代码我几乎没有问题,请回答。我是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中使用退货吗?如果我使用退货如何打印name,hp and dmg

为什么我不能像敌人那样制造第二个物体2;并打印出第二个敌人,如

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

我如何制作同样的功能但是对于播放器名称为Hit PointsDamage:这样的播放器,如何向用户询问他的名字并将其输入播放器名称:。

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

2 个答案:

答案 0 :(得分:2)

让我们分解一下:

  

我应该在敌人的功能中使用返回吗?

我相信你的编译器警告过你。为什么?我们来看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()函数或(更好)流输出运算符<<)中。
  4. 至于“我如何向用户询问他的名字并以玩家名称输入”,流提取操作符可能对此有好处。

答案 1 :(得分:1)

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

相关问题