在我的代码中,我有一个类似这样的课程
#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方法?
答案 0 :(得分:0)
最简单的方法是使用*运算符取消引用,然后使用它。根据sp2danny的评论。
std::cout << (*instance)[1];