C++类、对象和返回
C++ class,object and 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
中使用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();
}
然而,这不是正确的方法。看起来你正在尝试创建一个构造函数。我不想为你写所有的代码,但我希望你:
- 阅读构造函数、它们是什么以及如何编写它们
- 将
enemy
函数拆分为两部分:初始化和打印 - 将第一部分放入构造函数中,将第二部分放入
tostring()
函数或(更好)流输出运算符(<<
)中
至于"我怎么能向用户询问他的名字并将其输入到播放器名称中",流提取操作符可能会很好。
除非您想返回数据,否则不需要使用返回-因此在这种情况下,要么将返回类型设置为void,要么将函数更新为构造函数(这可能是您想要的)。
相关文章:
- 如何返回对象C++的数组
- 如何使用std::min和std::less返回对象
- 如何通过引用返回对象
- 如何安全地从 DLL 调用返回对象
- 如何在不销毁对象的情况下返回对象列表
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 使用返回对象的函数处理错误
- 何时返回指针与返回对象的一般经验法则?
- 如何使用运算符+重载函数正确返回对象?
- C++,class,一个返回对象的函数
- 运算符的返回对象 = C++ 中的重载
- 从队列返回对象的最快方法,但前提是队列有它
- 如何使用条件表达式返回对象指针?
- 使用构造函数从函数返回对象
- 隐式转换函数的返回对象时是否会影响性能?
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 按值和堆栈大小限制返回对象
- 我应该如何从函数返回对象?
- c++:何时传递指针与返回对象
- 返回对象会丢失属性