【问题标题】:using unique_ptr in qt member variable [duplicate]在qt成员变量中使用unique_ptr [重复]
【发布时间】:2015-08-23 22:09:43
【问题描述】:

我想将 unique_ptr 用于 QMenu 而不将其作为基本小部件的子级,因此我已将其声明为这样

private:
std::unique_ptr<QMenu> m_pMenu;

在构造函数中

std::unique_ptr<QMenu> m_pMenu ( new QMenu());
m_pMenu->setObjectName("JobContextMenu");

我还添加了 我的 .pro 文件中的 CONFIG += c++11 但是在编译 unique_ptr 时返回错误为 “sizeof”对不完整类型“QMenu”的无效应用

【问题讨论】:

    标签: c++ qt smart-pointers


    【解决方案1】:

    重复定义。 此外,您可以在 C++ 11 中这样做:

    private:
    std::unique_ptr<QMenu> m_pMenu = std::unique_ptr<QMenu>(new QMenu);
    

    【讨论】:

    • “重复定义”是什么意思?
    • 你不应该混用 newunique_ptr。使用std::make_unique 构建菜单。
    • make_unique 是 C++ 14 功能,而不是 C++ 11。
    • 当然,它是 c++14(OP 没有提到不能使用),但是所有主要编译器都支持此功能已有一段时间了。我对您的答案投了反对票,因为它缺乏实质内容并且建议已经过时,并且随着时间的推移只会变得越来越多,人们将来会关注这个答案。
    • @NicolasHolthaus,也许在你的美国,每个人都使用最新的编译器,但在俄罗斯和大多数国家(据我所知),许多使用编译器版本的作品都有很大的限制。因此,考虑到这一事实是非常可取的。 topic starter 将他的配置设置为 C++ 11,我为 C++ 11 提供建议。
    猜你喜欢
    • 2013-01-09
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 2020-09-15
    • 2012-06-05
    • 2018-08-09
    相关资源
    最近更新 更多