首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标头中的QScopedPointer声明,源中的定义

标头中的QScopedPointer声明,源中的定义
EN

Stack Overflow用户
提问于 2017-03-29 05:25:21
回答 1查看 612关注 0票数 1

您是否可以在标头中声明QScopedPointer:

代码语言:javascript
复制
QScopedPointer <T> _name;

在.cpp定义/实例化中:

代码语言:javascript
复制
_name ( /*new T*/ );

注意:我知道QScopedPointer没有执行此操作的运算符,只有一个ctor,但从概念上讲,这可以以某种方式实现吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 12:42:54

我们可以在类声明的头中使用QScopedPointer<T>-typed类成员吗?

是。确保定义或声明了类型T

代码语言:javascript
复制
///
/// File MyClass.h
///

// Either have:
#include "MyType.h" // defines MyType

// Or:
class MyType; // forward declaraion

class MyClass
{
public:
    MyClass();
    ////
private:
    QScopedPointer<MyType> m_pTypeObj;
};

但是您应该始终在实例化对象并将指针存储在该QScopedPointer<MyType>中的位置定义类型

代码语言:javascript
复制
#include "MyClass.h" // defines MyClass
// If not through MyClass.h then must have:
#include "MyType.h"  // defines MyType

MyClass::MyClass()
{
    // now we can instantiate MyType
    m_pTypeObj.reset(new MyType);
    // and use the scoped pointer
    m_pTypeObj->method();
}

或者正如作者所暗示的那样:

代码语言:javascript
复制
MyClass::MyClass() : m_pTypeObj(new MyType)
{
    // and use the scoped pointer
    m_pTypeObj->method();
}

这种方法也适用于现在可以取代QScopedPointerstd::unique_ptr

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43080236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档