C++使用方括号和实例指针

Sag*_*Low 12 c++ pointers class operand

我创建了一个单例类,它使用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]=...
Run Code Online (Sandbox Code Playgroud)

但它不起作用...有没有办法可以使用括号直接使用类指针访问数组?

谢谢 !

jua*_*nza 32

试试这个:

(*Risc)[X]=...
Run Code Online (Sandbox Code Playgroud)

方括号运算符优先于指针解引用运算符.也可以通过名称调用运算符,尽管这会产生相当笨重的语法:

Risc->operator[](x) = ...
Run Code Online (Sandbox Code Playgroud)