この質問は、砂時計パターンに関するステファヌス デュ トワの講演に関連しています。すばらしい話で、図書館のライターにとって本当に役に立ちます。
YouTube リンク: https://youtu.be/PVYdHDm0q6Y
Slideshare リンク: http://www.slideshare.net/StefanusDuToit/cpp-con-2014-hourglass-interfaces-for-c-apis
わかりましたここに質問があります:
std::vector<MyObject>
ライブラリの境界を越えてa を渡す必要があるとします。砂時計パターンを使用してこれを行う最善の方法は何ですか。パフォーマンスだけでなく、きれいなインターフェースを維持することも心配しています。以下に、実装したいインターフェースの例を示します。
クライアント側 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);
これで私の質問が説明されることを願っています。