Tôi cố gắng để biên dịch một ứng dụng android trong android studio (ndk r10d) trong đó sử dụng một số mã C++. Tôi cần C++ 11 vì vậy tôi đã thêm -std=gnu++11
(Tôi cần gnu++11
thay vì c++11
cho tiện ích mở rộng mà tôi đang sử dụng). Tôi đang sử dụng stlport stl, do các thư viện khác tôi đang sử dụng mà sử dụng thư viện stl này. Vì vậy CFLAGS tôi và các thông số stl trong file build.gradle trông như thế này:Bắt lỗi: 'shared_ptr' trong không gian tên 'std' không tên một loại
stl "stlport_static"
cFlags " mylib1.a mylib2.a ... -fexceptions -frtti -std=gnu++11"
Tôi cũng bao gồm bộ nhớ: #include <memory>
Khi cố gắng để biên dịch tôi nhận được lỗi này:
'shared_ptr' in namespace 'std' does not name a type
Tôi đã sử dụng việc thực hiện tăng cường cho các con trỏ thông minh cho đến bây giờ nhưng với việc di chuyển đến C++ 11 Tôi thà sử dụng việc thực hiện tiêu chuẩn.
Mã thực sự gây ra lỗi là gì? –
Các lỗi ban đầu là về vấn đề này xác định tôi thêm vào làm cho mã ngắn hơn nhưng các lỗi được nhìn thấy khắp các tập tin bất cứ nơi nào tôi cố gắng sử dụng macro này: #define myapp_shared_ptr std :: shared_ptr – royeet
shared_ptr không tên một loại. Nó đặt tên một mẫu kiểu. Bạn có chắc chắn bạn đang làm shared_ptr khi bạn sử dụng? Các lỗi tôi nhận được khi tôi rời khỏi đó ra là "sử dụng mẫu lớp đòi hỏi đối số mẫu" –
Charlie