Хотя для передачи вашего новомодного класса-обертки в существующие функции библиотеки SDL потребуется предоставление оператора преобразования, вы должны спросить себя, действительно ли вам это нужно.
Причина, по которой c_str()
существует вообщеЭто так, что наши программисты на C ++ могут использовать std::string
и затем вызывать все те архаичные функции библиотеки времени выполнения, которые никогда о ней не слышали.Если вы пишете программу на C ++ с нуля, будет ли какой-либо из ваших вызовов функций принимать const char*
?Нет, они бы взяли const std::string&
, возможно.
Итак, если вы заключаете SDL в хорошую библиотеку, тогда нужно спросить, должны ли вы когда-либо раскрывать основную информациюструктуры данных.Конечно, вашей библиотеке всегда захочется поговорить с Surface
, и не волнует, что происходит под ней?
Так что мое предпочтительное решение было бы скрыть это и позволить тем классам, которые имеют дело с работой с базовым SDLбиблиотека, сделай так.