有没有办法为类的指针定义括号运算符?

时间:2014-07-03 21:20:51

标签: c++

基本上,我创建了一个类,给它一个括号运算符但是因为它更好地将它作为指针而不是字段,我必须像这样使用它:

auto* p = new wannabeArray();
(*p)[1] = 5;

有没有办法让p [1]正常工作?

2 个答案:

答案 0 :(得分:4)

p[1]的含义已由语言定义。它无法更改为指针。您只能为用户定义的类型定义。

答案 1 :(得分:1)

可以创建一个类来保存指针,例如

class wannabeHolder: boost::noncopyable
{
    wannabeArray *p;
public:
    wannabeHolder(wannabeArray *p): p(p) {}

    wannabeArray *operator->() { return p; }
    wannabeArray::value_type &operator[](size_t n) { return (*p)[n]; }
};

然而,你在这里重新发明轮子的一部分,或者至少是一些轮辐。正如Alf所说,组织代码可能有更好的方法,而不是像这样做。