QT创建者和奇怪的代码完成使用智能指针
QT Creator and strange code completion using smart pointer
我使用的是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->",代码完成窗口弹出,但如果我键入"bar->",则不会发生任何事情。
为什么代码完成只适用于shared_ptrs而不适用于unique_ptrs?
更新:我使用的QT Creator带有CMake和add_definitions(-std=c++11),这一点可能很重要。
这是一个错误。
在未来的某个时候,QtCreator可能会开始使用真正的编译器前端(可能clang,这对于这种用途来说非常好)来进行C++解析,以实现自动补全和语法高亮显示,但2.8.1有自己不完善的C++解析器。C++拥有完整的模板和预处理器宏,以及几十年来积累的遗留crud,解析起来非常复杂(因此,如果你完全解析的话,解析速度会很慢),所以如果不是由真正符合标准的编译器进行解析,那么像这样的错误也就不足为奇了。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 优先顺序:智能指针和类析构函数
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 智能指针作为无序映射键,并通过引用进行比较
- 智能指针概念所有权和寿命
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 尝试使用智能指针时引发异常
- 我可以制作指向智能指针的智能指针吗?
- 通过智能指针和转换对基本模板参数进行模板推导
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 从堆栈分配的原始指针构造智能指针
- 初始化指向类实例的智能指针并访问其方法
- 如何使用 std::make_shared 创建基类类型的智能指针?
- 给定一个指向堆分配内存的指针,智能指针实现如何为其找到合适的释放函数?
- 编译器不会使用 -std=c++11 编译智能指针
- 具有智能指针的多态性
- C++:矢量分配器行为、内存分配和智能指针
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 指向函数签名中的常量智能指针
- 使用智能指针附加的继承对象的深层复制