2012-06-17 17 views
10

GetInstance()メソッドを使用してインスタンスアドレス(ポインタ)を取得するシングルトンクラスを作成しました。 クラスの中には、operator [](配列への直接アクセス)を作成したunsigned long intの配列があります。 [] operatorを使用するには、私はGetInstanceから得たポインタをどのように使用できますか? 私が試した:C++は角括弧でインスタンスへのポインタを使用します

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]=... 

をしかし、それは動作しません...私は、直接クラスのポインタを使用してアレイにアクセスするためのブラケットを使用することができる方法はありますか?

ありがとうございます!

+0

なぜポインタが必要ですか? 'static risc&getInstance()'も同様です。 – MSalters

+0

手順... – SagiLow

答えて

28

これを試してみてください:

(*Risc)[X]=... 

角括弧演算子は、ポインタ参照演算子に優先します。あなたが参照を使用することができます

Risc->operator[](x) = ... 
+0

作業...ありがとうございました! – SagiLow

+1

+1の2番目のヒントは明示的な形式です。あなたはそれも "この"キーワードでうまくいっていると言わなければなりません。 –

1

:かなり不格好な構文になりますが、名前でオペレーターを呼び出すことも可能であるあなたは、ポインタを変更した場合

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

あなたが問題を抱えている可能性がありますが、これはシングルトンなので、この場合は起こらないはずです。

詳細はthis answerを参照してください。

関連する問題