如何在C ++中指向对象的指针上调用偏移运算符

时间:2014-07-06 23:14:18

标签: c++ pointers operator-overloading

在我的代码中,我有一个类似这样的课程

#include <iostream>

//Not my real code

class SomeClass
{
    operator[] (int integer);
}

SomeClass::operator[] (int integer)
{
    return integer;
}

我可以在堆栈上创建一个这样的实例,并使用像这样的偏移运算符方法。

SomeClass instance;
std::cout << instance[1];

但是如果我使用带有指针的堆内存我只能做到这一点

SomeClass *instance = new SomeClass();
std::cout << instance->operator[](1);

我尝试过这样的解除引用错误&#34;间接需要指针opperand&#34;

SomeClass *instance = new SomeClass();
std::cout << *instance[1];

有没有办法可以在指向对象的指针上隐式使用operator方法?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用*运算符取消引用,然后使用它。根据sp2danny的评论。

std::cout << (*instance)[1];