2013-03-26 62 views
3

我正在創建供第三方使用的C++庫。雖然我熟悉創建C庫,但我幾乎沒有經驗來創建C++庫。我擔心的是,我需要考慮C++庫API提出的其他問題。如:C++庫API設計問題

  1. 跨API處理異常。
  2. 用戶訪問由庫創建的對象的類成員
  3. 用戶銷燬由庫創建的對象,反之亦然。
  4. 誰知道什麼...

我必須超越的,是我必須考慮的C庫考慮的?

問候

+0

1.我就讓別人回答這個問題 2.只是沒有'public'成員所有,總是使用seters /干將,如果用戶需要訪問一些類成員 3.儘量避免強迫用戶或你的圖書館刪除他/它沒有創建的對象 – SpongeBobFan 2013-03-26 10:36:21

+0

你必須考慮所有這些和更多的共同Padawan!異常處理顯然是非常重要的一點。在此之前,您必須考慮您的所有客戶端是否都會意識到C++,或者您可能不得不考慮在邊界捕獲異常並返回C類型的成功/失敗。內存管理方面的考慮也是至關重要的 - 不保證包含的內存管理可能會讓你陷入由客戶分配和釋放不匹配的大錯誤。因此,雖然我可以添加的答案並不多,但我也不認爲有如此全面的列表 – user2184879 2013-03-26 10:37:40

+2

如果您的目標是Windows,那麼您的客戶*必須*使用與您完全相同的編譯器版本。這在Linux和Mac OS X上不是什麼問題。Windows C++ API上的IME不值得。該庫可以用C++編寫,但只導出C兼容的API。 – 2013-03-26 11:02:21

回答

4

C++是比C更復雜的語言,所以有您需要知道的多了很多的問題。對於如何設計一個良好的公/私分離,文檔,版本控制,維護向後兼容性等,總是存在語言中立的問題。但是,還存在各種C++特有的問題,例如常量正確性,模板使用,異常與返回代碼,不暴露數據成員,使用繼承,考慮拷貝構造函數和賦值操作符,使用指針或引用,默認參數,朋友,使用內聯等。

完全披露,我是本書的作者「C++的API設計」。我不想聽起來像推動本書,它確實涵蓋了你所問的主題:如何爲C++設計良好的API。您可以查看本書目錄,以便全面瞭解您應該考慮的問題。此外,示例章節還包括對pimpl習慣用法的討論,我個人喜歡這種習慣用法,以便在C++中提供更好的封裝。

http://www.apibook.com/blog/contents