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

C++ 如何在C+;中对指向对象的指针调用偏移运算符+;,c++,pointers,operator-overloading,C++,Pointers,Operator Overloading,在我的代码中有这样一个类 #include <iostream> //Not my real code class SomeClass { operator[] (int integer); } SomeClass::operator[] (int integer) { return integer; } #包括 //不是我真正的代码 上课 { 运算符[](整数); } SomeClass::运算符[](整数) { 返回整数; } 我可以在堆栈上创建一个实例

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

#include <iostream>

//Not my real code

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

SomeClass::operator[] (int integer)
{
    return integer;
}
#包括
//不是我真正的代码
上课
{
运算符[](整数);
}
SomeClass::运算符[](整数)
{
返回整数;
}
我可以在堆栈上创建一个实例,并像这样使用偏移操作符方法

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

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

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

std::无法记住运算符优先级。它是
操作符[]
。这只是一个函数,所以您可以像调用函数一样调用它。例如
(*实例)[i]
否,因为必须首先使用一个解引用运算符(
->
*
)对指针进行解引用。我建议实现一个更漂亮的
at()
成员函数;因此,
std::cout at(1)
@mnunberg:传统智慧(又称标准)认为这样的
at
成员函数必须执行边界检查,而
操作符[]
不需要。这是正确的,所以我将使用(*instance)[1]谢谢
SomeClass *instance = new SomeClass();
std::cout << *instance[1];
std::cout << (*instance)[1];