Проблема не в том, что ни ваша функция, ни MessageBox
не изменяют какие-либо элементы переменных - их нет, и это легко увидеть.
Проблема заключается в том, что MessageBox
не помечена как const
и поэтому у вас есть функция const
члена (Ваша), призывающая не const
один (MessageBox
). Это недопустимо, и в этом проблема.
Так почему же это не указано const
? Я сомневаюсь, что вы когда-нибудь получите окончательный ответ на этот вопрос, если одна причина действительно существует.
Лично я подозреваю, что это сочетание факторов, из-за которых оно не было const
изначально, и теперь это то, что оно есть.
Одна из потенциальных причин состоит в том, что многие внутренние биты MFC и их части включают в себя манипуляции и настройку карт - например, карты, которые связывают объекты Windows HWND с объектами MFC CWnd
.
Возможно, им пришлось ослабить использование const
, чтобы учесть вызовы не const
функций в глубине сети вызовов в тех местах, где пользователи никогда не видят.
Так почему бы не использовать mutable
, или, может быть, даже const_cast
? Помните, что MFC существует уже давно, и когда он был разработан, компилятор Microsoft может не поддерживать некоторые из более экзотических функций C++ в то время.
'Я хотел бы знать, какие переменные MessageBox изменяются и как проявляется модификация.' MFC поставляется с исходным кодом. Почему бы не посмотреть исходный код? – PaulMcKenzie