2012-06-17 34 views
10

我创建了一个使用GetInstance()方法获取实例地址(指针)的单例类。 在类里面我有一个unsigned long int数组,我为它创建了operator [](直接访问数组)。 如何使用从GetInstance获得的指针以便使用[] operator? 我已经试过:使用方括号指向实例的指针的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显式。你应该说这也适用于“这个”关键字。 –

1

您可以使用引用:

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

,如果你修改了指针你可能有问题,但这不应该发生在这种情况下,因为它是一个单身人士。

请参阅this answer了解更多详情。