У меня есть класс, который перегружает оператор индекса:
class SomeClass
{
public:
int& operator[] (const int idx)
{
return someArray[idx];
}
private:
int someArray[10];
};
Это, конечно, позволяет мне получить доступ к элементам массива элемента someArray следующим образом:
SomeClass c;
int x = c[0];
Однако некоторые экземпляры SomeClass будут обернуты в общий указатель наддува:
boost::shared_ptr<SomeClass> p(new SomeClass);
Тем не менее, чтобы использовать оператор индекса, я должен использовать более подробный синтаксис, который побеждает краткость перегрузки оператора индекса:
int x = p->operator[](0);
Есть ли какой-нибудь способ доступа к оператору подписки более кратким способом для таких случаев?
Оба juanchopanza и DyP ответили на мой вопрос достаточно. После поиска в Google этикета ответов, найденных в комментариях, было предложено опубликовать ответ на свой вопрос, ссылаясь на правильные ответы в комментариях, чтобы закрыть вопрос (хотя мне придется ждать 2 дня, чтобы принять собственный ответ).
Ответ Джанхопанзы следующий:
int x = (*p)[0];
Ответ DyP заключается в следующем:
SomeClass& obj = *p;
int x = obj[0];
Спасибо вам обоим за ваш вклад.
Других решений пока нет …