[英]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.