Sau khi làm theo các bước trong this post Tôi đã quản lý để làm cho Eclipse (Indigo) nhận diện unique_ptr
(và các công cụ mới khác của C++ 11). Vấn đề là operator->
cho unique_ptr
dường như không được hỗ trợ trong Eclipse. Ở đây bạn có một ví dụ:Toán tử dereference cho unique_ptr không hoạt động trong Eclipse
class Foo { void bar() { /* ... */ } };
std::unique_ptr<Foo> foo;
(*foo).bar(); // 1
foo->bar(); // 2
Trường hợp 1
hoạt động như mong đợi: không có lỗi và tự động hoàn thành. Tuy nhiên, đối với trường hợp 2
, Eclipse đánh dấu câu lệnh bằng một lỗi ("Phương thức 'thanh' không thể được giải quyết"), cộng với tự động hoàn thành từ foo->
không hoạt động.
Thú vị nhất, tôi không gặp bất kỳ sự cố nào với std::shared_ptr
. Nó chỉ xảy ra cho std::unique_ptr
.
Có ai gặp phải sự cố tương tự không? Có ai biết cách sửa chữa nó không?
CHỈNH SỬA: chỉ nhằm mục đích làm rõ, quá trình biên dịch diễn ra tốt đẹp cho đoạn mã được hiển thị ở trên. Vì vậy, vấn đề không có trong trình biên dịch, nhưng trên Eclipse.
@dirk: câu hỏi là về tự động hoàn thành và chọn lint tĩnh trong IDE; không đề cập đến các vấn đề biên dịch. – Rook
@dirkgently Tôi đang sử dụng g ++ 4.6, do đó việc biên dịch sẽ ổn. Vấn đề chỉ ảnh hưởng đến Eclipse. – betabandido
@Rock: Phải. Tôi đã bỏ lỡ một chút. – dirkgently