Использование boost :: shared_ptr с классами, которые перегружают оператор индекса ([])

У меня есть класс, который перегружает оператор индекса:

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);

Есть ли какой-нибудь способ доступа к оператору подписки более кратким способом для таких случаев?

6

Решение

Оба juanchopanza и DyP ответили на мой вопрос достаточно. После поиска в Google этикета ответов, найденных в комментариях, было предложено опубликовать ответ на свой вопрос, ссылаясь на правильные ответы в комментариях, чтобы закрыть вопрос (хотя мне придется ждать 2 дня, чтобы принять собственный ответ).

Ответ Джанхопанзы следующий:

int x = (*p)[0];

Ответ DyP заключается в следующем:

SomeClass& obj = *p;
int x = obj[0];

Спасибо вам обоим за ваш вклад.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]