我正在上以下课:
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]
,但是作为这个定义,我得到了错误消息“expected标识符”。
最佳答案
operator[]
是一个接受 int 的函数
operator[](int addr)
返回一个引用
& operator[](int addr)
长度为9的数组
(&operator[](int addr))[9]
const char
const char (&operator[](int addr))[9]
就是说,不要那样做。使用 typedef
来简化:
typedef const char (&ref9)[9];
ref9 operator[](int addr);
也就是说,也不要那样做。
std::array<std::array<char, 9>, 0x10000> _memory;
const std::array<char, 9>& operator[](int addr);
关于c++ - [] C++中get和set操作的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33936685/