Возвращающий ссылку на класс с перегруженным private & operator?

StackOverflow https://stackoverflow.com/questions/2206729

Вопрос

Я получил класс с именем 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;
    }
};
Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top