17

GetInstance()メソッドを使用してインスタンス アドレス (ポインター) を取得するシングルトン クラスを作成しました。クラス内には、そのために作成した unsigned long int の配列がありoperator []ます (配列への直接アクセス)。GetInstanceを使用するために取得したポインターを使用するにはどうすればよい[] operatorですか? 私はもう試した :

class risc { // singleton
protected:
unsigned long registers[8];
static risc* _instance;
risc() {
    for (int i=0;i<8;i++) {
        registers[i]=0;};
    }
public:
unsigned long   operator   [](int i) const  {return registers[i];}; // get []
unsigned long & operator   [](int i)        {return registers[i];}; // set []
static risc* getInstance() { // constructor
        if (_instance==NULL) {
            _instance=new risc();
        }
        return _instance;
    }
};

risc* Risc=getInstance();
*Risc[X]=...

しかし、それは機能しません...クラスポインタを使用して直接配列にアクセスするために括弧を使用できる方法はありますか?

ありがとう !

4

2 に答える 2

40

これを試して:

(*Risc)[X]=...

角かっこ演算子は、ポインター逆参照演算子よりも優先されます。演算子を名前で呼び出すこともできますが、これはややぎこちない構文になります。

Risc->operator[](x) = ...
于 2012-06-17T07:39:31.087 に答える