如何重载下标操作符以允许RPG字符数组
How to overload the subscript operator to allow an array of RPG characters?
尝试重载下标操作符,这样我就可以为我的游戏创建一个字符数组。想不出大点子。我想只是传递一个整数(即索引),并让它返回调用对象的名称(即。字符本身)
下标运算符
Character * Character::&operator[](int index)
{
return this->mName[index];
}
我得到的错误是:
Error: a reference type of "Character*&" (not const-qualified) cannot be
initialized with a value type of char.
顺便说一句,我正在使用我自己的字符串类——这是我自己写的(也就是说,这毕竟是学校)——所以我可以在必要时重载任何东西。
character.h
#ifndef CHARACTER_H
#define CHARACTER_H
#include "backpack.h"
#include "coinpouch.h"
#include "string.h"
class Character
{
public:
//Default constructor
Character();
//Destructor
~Character();
//Constructor
Character(const String & name, const CoinPouch & pouch, const BackPack & purse);
//Copy Constructor
Character(const Character & copy);
//Overloaded assignment operator
Character &operator=(const Character & rhs);
//Overloaded subscript operator
Character * &operator[](int index);
//Setters
void setName(String name);
void setCoinPouch(CoinPouch pouch);
void setBackPack(BackPack purse);
//Getters
String getName();
CoinPouch getPouch();
BackPack getPurse();
//Methods
void Display();
private:
//Data members
String mName;
CoinPouch mPouch;
BackPack mPurse;
};
#endif
你把事情搞混了!如果您重载Character::operator[]
,这意味着您希望能够像处理数组一样处理Character
对象。也就是说,您可以这样做:
Character c("Bob", pouch, purse);
c[0]; // Using the Character like an array
但那不是你想要的。相反,你只需要一个Character
数组。你根本不需要重载operator[]
来做这件事,你只需要声明一个数组:
Character array[10]; // This is an array of Characters
array[0].setName("Bob"); // This sets the 0th Character's name to Bob
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '