首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在类成员中移动rvalue

在类成员中移动rvalue
EN

Stack Overflow用户
提问于 2017-10-16 09:35:16
回答 1查看 82关注 0票数 2

为了寻找答案,我已经浏览了一段时间,但我似乎找不到答案。所以我决定在这里特别提出这个问题。

我一直试图使用这样的东西(以及这里的变体):

代码语言:javascript
复制
struct NonCopyable
{
    NonCopyable() { };
    NonCopyable(const NonCopyable& other) = delete;
    NonCopyable(NonCopyable&& other) {  };
};

struct Host
{
    Host(NonCopyable&& nc) : m_nc(nc) { }
    NonCopyable m_nc;
};

为实现这一目标:

代码语言:javascript
复制
Host h(NonCopyable());

换句话说,我想在NonCopyable中构造m_nc。这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 09:37:53

注意,nc是一个作为命名参数的lvalue,您需要将它转换为rvalue,例如通过std:移动

代码语言:javascript
复制
Host(NonCopyable&& nc) : m_nc(std::move(nc)) { }

编辑

有一个最烦人的解析问题。Host h(NonCopyable());不是一个变量定义,而是一个函数声明;它声明一个名为h的函数,它返回Host,并接受带有函数指针类型的未命名参数(它不需要任何内容并返回NonCopyable)。

只需将其更改为Host h{NonCopyable()};即可。

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

https://stackoverflow.com/questions/46767131

复制
相关文章

相似问题

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