簡體   English   中英

將boost :: shared_ptr與重載下標運算符([])的類一起使用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM