【发布时间】:2012-06-24 15:00:53
【问题描述】:
按照this post 中的步骤操作后,我设法让 Eclipse (Indigo) 识别unique_ptr(以及其他 C++11 新内容)。问题是 Eclipse 似乎不支持 operator-> for unique_ptr。这里有一个例子:
class Foo { void bar() { /* ... */ } };
std::unique_ptr<Foo> foo;
(*foo).bar(); // 1
foo->bar(); // 2
案例1 按预期工作:没有错误并且自动完成工作。然而,对于2 的情况,Eclipse 将语句标记为错误(“方法 'bar' 无法解析”),并且来自foo-> 的自动完成功能不起作用。
最有趣的是,我对std::shared_ptr 没有任何问题。它只发生在std::unique_ptr。
有没有人遇到过同样的问题?有谁知道解决方法吗?
编辑: 只是为了澄清目的,上面显示的代码 sn-p 的编译过程很好。所以,问题不在于编译器本身,而在于 Eclipse。
【问题讨论】:
-
@dirk:问题是关于 IDE 中的自动完成和静态 lint-picking;没有提到编译问题。
-
@dirkgently 我使用的是 g++ 4.6,所以编译正常。该问题仅影响 Eclipse。
-
@Rock:对。我错过了那一点。
-
即使编译器还不完全支持 C++11,所以我希望 eclipse(众所周知,它落后)在编译器支持之后才支持它。
-
我曾经使用 CDT 开发 C++ 应用程序,但我发现它的方法(单独理解 C++ 语义,从而在不依赖外部编译器的情况下给您带来错误)非常糟糕。有趣的不可能练习:尝试让 eclipse 不抱怨 CLOCKS_PER_SEC(这显然是一个宏,它没有在任何标题中定义,因为它是“虚拟的”)未定义。他们应该像 XCode 那样做:将 CDT 与 LLVM 的出色基础架构集成并使用它。同时,我切换回 GVim,我是一个更快乐的开发者。
标签: c++ eclipse c++11 eclipse-cdt unique-ptr