我正在使用qtcreator(2.8.1)并且使用智能指针有一些奇怪的行为。
看一下这个片段:
class myclass {
public:
void test() {};
};
....
std::shared_ptr<myclass> foo(new myclass);
foo->test();
std::unique_ptr<myclass> bar(new myclass);
bar->test();
如果我输入“foo-&gt;”,则会弹出代码完成窗口,但如果我输入“bar-&gt;”没有任何反应。
为什么代码完成只适用于shared_ptrs而不适用于unique_ptrs?
更新:了解我正在使用带有CMake和add_definitions的QT Creator(-std = c ++ 11)可能很重要。
答案 0 :(得分:5)
在未来的某个时候,Qt Creator可能会开始使用真正的编译器前端(可能 clang 这对于这种用途非常有用)来进行自动完成和语法高亮的C ++解析,但2.8.1有它自己不完美的C ++解析器。 C ++使用它的turing-complete模板和前处理器宏以及数十年积累的遗留问题,解析起来非常复杂(因此,如果你完全完成它会很慢),所以如果解析不是这样的错误就不会太令人惊讶了由符合标准的实际编译器完成。