[英]Using boost::shared_ptr with classes that overload the subscript operator ([])
我有一个重载下标运算符的类:
class SomeClass
{
public:
int& operator[] (const int idx)
{
return someArray[idx];
}
private:
int someArray[10];
};
这当然允许我像这样访问someArray成员的数组元素:
SomeClass c;
int x = c[0];
但是,SomeClass的某些实例将包含在boost共享指针中:
boost::shared_ptr<SomeClass> p(new SomeClass);
但是,为了使用下标运算符,我必须使用更详细的语法,这种语法会破坏下标运算符重载的简洁性:
int x = p->operator[](0);
有没有办法以更简单的方式访问下标运算符?
juanchopanza和DyP都充分回答了我的问题。 在谷歌搜索关于礼仪中的评论中找到的答案之后,有人建议在评论中发表引用正确答案的自我答案以便结束问题(我必须等待2天才能接受我自己的答案)。
juanchopanza的答案如下:
int x = (*p)[0];
DyP的答案如下:
SomeClass& obj = *p;
int x = obj[0];
谢谢你们的贡献。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.