我有以下类(class):

class mem
{
private:
    char _memory[0x10000][9];

public:
    const (&char)[9] operator [] (int addr);
}

我的目标是能够像数组一样使用 mem 类,而稍后实现会更加复杂。所以,我应该能够
  • 像 'mem[0x1234]' 一样访问它以返回对 9 个字符的数组的引用
  • 像'mem[0x1234] = "12345678\0";'

  • 这是我尝试过的:
    #include "mem.h"
    
    const (&char)[9] mem::operator [] (int addr)
    {
        return &_memory[addr];
    }
    

    但是,它说该方法“必须有一个返回值”,我以为我已将其定义为 (&char)[9] ,但作为此定义,我收到错误消息“需要一个标识符”。

    最佳答案

    写成以下方式

    #include "mem.h"
    
    const char ( & mem::operator [] (int addr) const )[9]
    {
        return _memory[addr];
    }
    

    您也可以添加非常量运算符
    char ( & mem::operator [] (int addr) )[9]
    {
        return _memory[addr];
    }
    

    类定义看起来像
    class mem
    {
    private:
        char _memory[0x10000][9];
    
    public:
        const char ( & operator [] (int addr) const )[9];
        char ( & operator [] (int addr) )[9];
    }
    

    关于c++ - [] C++ 中 get 和 set 操作的运算符重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33936685/

    10-12 06:21