7

按照本文中的步骤进行操作,我设法让 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按预期工作:没有错误并且自动完成工作。但是,对于 case 2,Eclipse 会将该语句标记为错误(“方法 'bar' 无法解析”),并且自动完成 fromfoo->不起作用。

最有趣的是,我对std::shared_ptr. 它只发生在std::unique_ptr.

有没有人遇到过同样的问题?有谁知道修复它的方法?

编辑:只是为了澄清目的,编译过程对于上面显示的代码片段来说很好。所以,问题不在于编译器本身,而在于 Eclipse。

4

2 回答 2

1

我终于在 CDT 中找到了一个错误报告,描述了我遇到的同样的问题。到目前为止,还没有真正解决该问题,但该错误报告中解释了一种解决方法:

是的,GCC 4.5 是最新的 GCC 版本,其库头文件可以被 CDT 准确索引。未能索引 4.6 标头的主要原因是 CDT 缺乏对 4.6 标头中广泛使用的“constexpr”和“nullptr”的支持(顺便说一句,有没有可能为 Juno 实现?)。

我通过在我的系统上安装 GCC 4.5 和 4.6 并在实际使用 4.6 进行编译时将 CDT 指向 4.5 的标头(通过在 Discovery Options 中将编译器调用命令设置为“g++-4.5”)来解决此问题。

于 2012-06-24T18:59:24.117 回答
0

此问题最近已在 cdt 8.1.1 中修复。只需去帮助->检查更新,它将被下载并安装。我已经测试了 unique_ptr 并且它被正确索引。

于 2012-10-01T12:41:36.747 回答