如何在c++中调用指向对象的指针上的偏移操作符

How can you call the offset operator on a pointer to an object in C++

本文关键字:指针 操作符 对象 c++ 调用      更新时间:2023-10-16

在我的代码中,我有一个像这样的类

#include <iostream>
//Not my real code
class SomeClass
{
    operator[] (int integer);
}
SomeClass::operator[] (int integer)
{
    return integer;
}

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

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

但是如果我用指针使用堆内存,我只能这样做

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

我试过像这样解引用它,错误是"间接需要指针操作数"

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

是否有一种方法,我可以使用操作符方法隐式指针指向一个对象?

最简单的方法是对*操作符进行反引用,然后直接使用它。根据sp2danny的评论

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