Tôi có một mã C++ sử dụng rất nhiều shared_ptr
và STL. Một tiêu đề phổ biến nóiC++ 0x std :: shared_ptr vs. boost :: shared_ptr
#include<boost/shared_ptr.hpp>
using boost::shared_ptr; // for shared_ptr
using namespace std; // for STL
tôi muốn chuyển sang C++ 0x tại để tận dụng các tính năng ngôn ngữ, sử dụng gcc 4.6 với -std=c++0x
. Tuy nhiên, hiện tại có std::shared_ptr
, dẫn đến sự mơ hồ đối với không xác định shared_ptr
(boost::shared_ptr
so với std::shared_ptr
).
Khi chuyển sang std::shared_ptr
thay vào đó, như thế này:
#include<memory>
using namespace std; // for STL; also imports std::shared_ptr
sau đó tôi nhận được vấn đề với boost::python
, mà làm việc apprently với boost::shared_ptr
chỉ (ít nhất mà không có thêm không quan trọng):
/usr/include/boost/python/object/make_ptr_instance.hpp:30:52: error: no matching function for call to 'get_pointer(const std::shared_ptr<Cell>&)'
My do đó, câu hỏi là
- nếu có e là một giải pháp đơn giản để giải quyết sự mơ hồ giữa
boost::shared_ptr
vàstd::shared_ptr
(ngoài hiện không sử dụng C++ 0x) và cũng có thể - nếu
boost::shared_ptr
cuối cùng sẽ là bí danh chostd::shared_ptr
; điều đó sẽ giải quyết vấn đề của tôi một cách tự động.
Cảm ơn!
PS. sử dụng tăng 1.42. – eudoxos
GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP GIẢI PHÁP Giải pháp Và nó có thể đơn giản như việc tìm kiếm và thay thế toàn cầu cho mọi phần tử stl. – stijn
Phải, đó sẽ là giải pháp, nhưng STL được sử dụng thường xuyên đến nỗi nó sẽ làm cho mã ít dễ đọc hơn; có lẽ tôi có thể xem xét việc viết bó của 'sử dụng std :: string; sử dụng std :: vector; 'etc khai báo trong tiêu đề chung. Nó thực sự không có nhiều phần 'std ::' được sử dụng, nhưng chúng được sử dụng rất thường xuyên. – eudoxos