如何在c++中调用指向对象的指针上的偏移操作符
How can you call the offset operator on a pointer to an object in C++
在我的代码中,我有一个像这样的类
#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];
相关文章:
- 我可以将C 17 Capture lambda ConstexPR转换操作符的结果用作函数指针模板非类型参数吗?
- c++中指针操作符的列表
- 如何保存指针重定义操作符
- 我可以对指针使用操作符==吗?
- 从指针访问[]操作符
- 当操作符delete()在汇编中删除vptr指针时
- 在操作符[]前解引用成员指针
- 通过操作符[]在map中插入指针类型的值总是NULL
- 返回指向类定义的结构体的指针,多个作用域操作符
- c++用户定义的文字操作符可以传递空指针吗?
- 指针上的操作符=可能导致mac上的分段错误
- c++的new操作符保证返回的指针不会改变它的值吗?
- 使用delete操作符删除void指针
- 有没有一种方法可以通过函数指针来调用操作符函数?
- c++操作符重载以指针类型作为参数
- 与智能指针相关的c++移动语义与复制构造函数和赋值操作符
- New和delete操作符不影响指向该类的指针的Deque的内容
- c++操作符,用于a = b .* C,并将指向a、b和C对象的指针作为输入
- 涉及数组指针时delete[]操作符的问题
- c++中指针操作符可以重载吗?