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 回答
1

您可以使用参考:

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

如果您修改了指针,您可能会遇到问题,但在这种情况下不应该发生这种情况,因为它是一个单例。

有关更多详细信息,请参阅此答案

于 2017-09-20T18:09:22.963 回答