gpt4 book ai didi

c++ - 没有按预期调用复制构造函数

转载 作者:行者123 更新时间:2023-11-30 01:53:36 25 4
gpt4 key购买 nike

我有这样的代码:

int a = 5;
Foo *foo = new Foo(MoreFoo(a),
Bar(a));

// Foo CTOR:
Foo(MoreFoo mf, Bar bar): MoreBar(&mf,bar){}

我的编译器给我一个错误类型:

no matching function for call to ‘Bar::Bar(Bar)’
note: candidates are:
note: Bar::Bar(Bar&)
no known conversion for argument 1 from ‘Bar’ to ‘Bar&’

错误显然与代码Bar(a)有关。显然 Bar 有合适的 CTOR 和 CCTOR。我理解为什么编译器提示尝试调用类似 Bar::Bar(Bar) 的东西,我正在创建一个无名变量 (Bar(a)),它必须在调用 Foo 构造函数期间被复制,但它不应该只调用 Bar CCTOR 吗?为什么我会收到错误消息?

编辑:

为什么你会想要调用 Bar::Bar(Bar) 而不是 Bar::Bar(Bar&)

最佳答案

临时对象不能绑定(bind)到引用,除非它们是对const 的引用。

关于c++ - 没有按预期调用复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com