Возвращает ссылку на класс с перегруженным оператором и оператором?

У меня есть класс с именем Property (из внешней библиотеки == не может быть изменен), который имеет закрытый перегруженный оператор &. Я использую этот класс в другом классе как свойство и (из соображений здравомыслия) я хотел бы вернуть ссылку на это свойство через метод Get. Однако я получил ошибку «не могу получить доступ к частному члену, объявленному в классе», с которым не могу справиться. Есть ли способ обойти это, не делая собственность общедоступной.

// Some external class.
class Property
{
    Property*   operator&() const;
};

class MyClass
{
protected:
    Property m_Property;

public:

    // error C2248: 'Property::operator &' : cannot access private member declared in class 'Property'
    const Property& GetProperty() const
    {
        return *& this->m_Property;
    }
};

person mslaf    schedule 05.02.2010    source источник


Ответы (1)


Я могу что-то упустить, но почему бы просто не сказать:

const Property& GetProperty() const
{
  return this->m_Property;
}

Тот факт, что оператор & является закрытым, довольно ясно указывает на то, что вы не должны его вызывать.

person Community    schedule 05.02.2010
comment
Вы правы, конечно. Я полагаю, слишком много кофе ;) Спасибо. - person mslaf; 05.02.2010