Re[3]: Сервис с одним интерфейсом и различной реализацией
От: B0FEE664  
Дата: 18.03.13 17:14
Оценка:
Здравствуйте, Vasya777, Вы писали:

BFE>>Pimpl idiom ака глупый указатель является стандартной парадигмой для данной ситуации.

V>А это можно сделать, если вся память для сервиса должна быть выделена статически на этапе компиляции?
Можно использовать placement new с зарезервированным буфером в статической памяти. У вас что, реал-тайм приложение? Чем вам обычный способ не угодил?

Может вам это поможет: http://habrahabr.ru/post/111602/

V>>>Возможно ли это сделать средствами C++ без использования условной компиляции?

BFE>>Да: подключая разные файлы на разных платформах.
V>То есть использовать различные условия сборки проекта?
Нет, просто под каждую платформу написать свой Makefile/project-файл в котором подключать соответствующий для данной платформы файл. Но можно сделать и через ifdef.

У нас в конторе поддерживается две версии реализации boost/posix под различные платформы Windows/MacOS/Linux. Выбор boost/posix задаётся через ifdef и параметры компилятора, а реализация для платформ разнесена по файлам.
Типа такого:

TransportInterface.hpp — здесь описан интерфейс,

а в этих файла реализацию под конкретную конфигурацию:
TransportInterface_asio.cpp
TransportInterface_eddy25.cpp
TransportInterface_posix.cpp
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.