Этот вопрос связан с докладом Стефана Дю Туа о песочных часах. Это отличный разговор, действительно полезный для авторов библиотек.
Ссылка на Youtube: https://youtu.be/PVYdHDm0q6Y
Slideshare Link: http://www.slideshare.net/StefanusDuToit/cpp-con-2014-hourglass-interfaces-for-c-apis
Хорошо, вот вопрос:
Скажи, что я должен пройти std::vector<MyObject>
через границу библиотеки. Что является лучшим способом сделать это, используя шаблон песочных часов. Я обеспокоен производительностью, а также сохранением чистоты интерфейса. Ниже приведен набор примеров интерфейсов, которые я хочу реализовать.
Клиентский интерфейс C ++:
void MyLibraryClass::DoSomething(const std::vector<MyObject>& objs);
C интерфейс:
???? (Not sure what is the best practice here)
Интерфейс внутренней библиотеки C ++:
MyInternalLibraryClass::DoSomething(const std::vector<MyObjectImpl>& objs);
Надеюсь, это объясняет мой вопрос.
Задача ещё не решена.
Других решений пока нет …