Объясните это определение оператора C ++ - PullRequest
3 голосов
/ 13 мая 2010

У меня есть следующий оператор, определенный в классе C ++ с именем StringProxy:

operator std::string&()
{
    return m_string;
}

а) Что это и как это работает? Я понимаю идею перегрузки операторов, но они обычно выглядят как X operator+(double i).

b) Учитывая экземпляр StringProxy, как я могу использовать этот оператор для получения m_string?

Ответы [ 2 ]

3 голосов
/ 13 мая 2010

Это метод конвертации. Чтобы получить m_string, просто используйте явное приведение: (std::string)stringProxy для выполнения преобразования. В зависимости от контекста (например, если вы назначаете строку), вы можете обойтись без приведения.

2 голосов
/ 13 мая 2010

Это оператор приведения. Они принимают форму оператора T () и включают приведение между пользовательскими типами. Вы можете получить std :: string, просто присвоив его обычной строке или ссылке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...