OhM*_*ere 6 c++ boost shared-ptr subscript operator-keyword
我有一个重载下标运算符的类:
class SomeClass
{
public:
int& operator[] (const int idx)
{
return someArray[idx];
}
private:
int someArray[10];
};
Run Code Online (Sandbox Code Playgroud)
这当然允许我像这样访问someArray成员的数组元素:
SomeClass c;
int x = c[0];
Run Code Online (Sandbox Code Playgroud)
但是,SomeClass的某些实例将包含在boost共享指针中:
boost::shared_ptr<SomeClass> p(new SomeClass);
Run Code Online (Sandbox Code Playgroud)
但是,为了使用下标运算符,我必须使用更详细的语法,这种语法会破坏下标运算符重载的简洁性:
int x = p->operator[](0);
Run Code Online (Sandbox Code Playgroud)
有没有办法以更简单的方式访问下标运算符?
juanchopanza和DyP都充分回答了我的问题。在谷歌搜索评论中找到答案的礼仪后,建议发布一个自我回答,引用评论中的正确答案,以结束问题(不过,我必须等待 2 天才能接受我自己的答案)。
胡安乔潘萨的答复如下:
int x = (*p)[0];
Run Code Online (Sandbox Code Playgroud)
DyP的答复如下:
SomeClass& obj = *p;
int x = obj[0];
Run Code Online (Sandbox Code Playgroud)
感谢你们俩的贡献。
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |