方案原始指針:
我使用從它返回原始指針到SomeClass
舊C++庫其中SomeClass
是從庫頭一個導出類中的方法說SomeClass.h
存儲從方法返回到智能指針
下面是我使用的LibraryMethod
簽名:
SomeClass* LibraryMethod();
我用不上更改庫。我只使用二進制&公共頭,這是一個典型的場景。
我不想在我的部分代碼中使用原始指針。因此,我在使用庫API的代碼中有shared pointer到SomeClass
。
std::shared_ptr<SomeClass> some_class;
我初始化這樣避免了原始指針存儲到SomeClass
some_class = (std::shared_ptr<SomeClass>)LibraryMethod();
這基本上工作,但我想在這裏瞭解詳細信息
問:
是的高於正確的技術?
我在這裏造成泄漏嗎?
有沒有更好的技術來處理這種情況?
您不應該混用不同版本的編譯器編譯的C++代碼。這樣做會導致很難發現異常情況。 – rustyx
你確定你需要'shared_ptr <>'而不是'unique_ptr <>'嗎? – gurka
@RustyX如果您有權訪問更改庫的內部代碼,您的觀點將是有效的。但不幸的是不是 –