0

ゲーム用の文字の配列を作成できるように、添字演算子をオーバーロードしようとしています。大きなアイデアを理解するのに苦労しています。私はそれを整数(つまりインデックス用)に渡して、呼び出し元のオブジェクトの名前(つまり文字自体)を返すことを考えていました

添字演算子

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
4

1 に答える 1

2

あなたは物事を混乱させています!をオーバーロードする場合、それはオブジェクトを配列Character::operator[]のように扱えるようにしたいということです。Characterつまり、次のようにします。

Character c("Bob", pouch, purse);
c[0]; // Using the Character like an array

しかし、それはあなたが望むものではありません。代わりに、単にCharacters の配列が必要です。これを行うためにオーバーロードする必要はまったくありませんoperator[]。配列を宣言するだけです。

Character array[10]; // This is an array of Characters
array[0].setName("Bob"); // This sets the 0th Character's name to Bob
于 2013-04-27T20:38:24.383 に答える