А это реальный код, или упрощённый?
S>Можно ли объединить в одну функцию (или шаблон)? Хочется следующее:
Можно в шаблон. Но толку-то? Тела всё равно разные, придётся делать специализацию. Если бы там был изложен сложный алкогоритм, это имело бы смысл. А если две строчки, как в примере, вся эта магия вокруг шаблонов только путаницу будет вносить. Проще две строчки повторить. Да, это повторемие, но зато читать проще.
Здравствуйте, Su34, Вы писали:
S>В приложении для Windows выполняется вызов функции, напр. search(GetWindowText()). Здесь подразумевается что GetWindowText() вернет строку текста, но вернет текст типа wchar_t, если указан UNICODE, или char, если не указан при компиляции. Соответственно мне необходимо иметь 2 функции search(const char* text) и search(const wchar_t* text). S>Или я туплю.
так вроде в winapi на каждую пару функций есть специальные макросы. Для поиска файла например есть макрос FindFirstFile который перенаправляет на FindFirstFileA или FindFirstFileW соответственно. Если двигаться в канве winapi незазорно будет определить и свои макросы
Здравствуйте, Pzz, Вы писали:
Pzz>Можно в шаблон. Но толку-то? Тела всё равно разные, придётся делать специализацию. Если бы там был изложен сложный алкогоритм, это имело бы смысл. А если две строчки, как в примере, вся эта магия вокруг шаблонов только путаницу будет вносить. Проще две строчки повторить. Да, это повторемие, но зато читать проще.
Скорее всего вопрос был задан достаточно некорректно.
В приложении для Windows выполняется вызов функции, напр. search(GetWindowText()). Здесь подразумевается что GetWindowText() вернет строку текста, но вернет текст типа wchar_t, если указан UNICODE, или char, если не указан при компиляции. Соответственно мне необходимо иметь 2 функции search(const char* text) и search(const wchar_t* text).
Или я туплю.
Если я правильно понял, то главная цель — не экономия нескольких строк кода, а возможность унифицированного вызова?. Тогда можно просто написать обёртку с двумя перегрузками:
Здравствуйте, sergii.p, Вы писали:
SP>так вроде в winapi на каждую пару функций есть специальные макросы. Для поиска файла например есть макрос FindFirstFile который перенаправляет на FindFirstFileA или FindFirstFileW соответственно. Если двигаться в канве winapi незазорно будет определить и свои макросы
SP>
Только если ты в одном типе сборки работаешь с одним типом строк. Если же в одной и той же конфигурации сборки ты хочешь и string и цstring, то тогда нужны перегрузки.
С такими макросами — это плохой путь
Здравствуйте, Su34, Вы писали:
S>Здравствуйте, Pzz, Вы писали:
Pzz>>Можно в шаблон. Но толку-то? Тела всё равно разные, придётся делать специализацию. Если бы там был изложен сложный алкогоритм, это имело бы смысл. А если две строчки, как в примере, вся эта магия вокруг шаблонов только путаницу будет вносить. Проще две строчки повторить. Да, это повторемие, но зато читать проще. S>Скорее всего вопрос был задан достаточно некорректно. S>В приложении для Windows выполняется вызов функции, напр. search(GetWindowText()). Здесь подразумевается что GetWindowText() вернет строку текста, но вернет текст типа wchar_t, если указан UNICODE, или char, если не указан при компиляции. Соответственно мне необходимо иметь 2 функции search(const char* text) и search(const wchar_t* text). S>Или я туплю.
Вы пишете программу для Windows 9x?
Если нет, то просто всегда работаете с wchar_t , что и является сегодня по умолчанию.