gpt4 book ai didi

c++ - 从 g++ 中的辅助函数调用构造函数时出现 "no matching function for call error"

转载 作者:行者123 更新时间:2023-11-28 08:22:32 24 4
gpt4 key购买 nike

我有一个构造函数

A::A(const Name& n,const IRole& r)
: ...
{ }

和使用构造函数的辅助函数

AP<A> A::Create(const Name& n, const IRole& r)
{
return new A(n,r);
}

当我编译这段代码时,g++ 会给我错误消息。

error: no matching function for call to ‘AIR::AP<AIR::A>::AP(AIR::AP<AIR::A>)’
note: candidates are: AIR::AP<T>::AP(AIR::AP<U>&) [with U = AIR::A, T = AIR::A]
note: AIR::AP<T>::AP(AIR::AP<T>&) [with T = AIR::A]
note: AIR::AP<T>::AP(T*) [with T = AIR::A]
error: initializing temporary from result of ‘AIR::AP<T>::AP(T*) [with T = AIR::A]’

这段代码有什么问题?

已添加

AP<A> A::Create(const Name& n, const IRole& r)
{
AP<A> port(new A(n,r));
return port;
}

似乎解决了这个问题。

最佳答案

您没有显示对 Create 的调用;是试图将调用的结果复制到一个新变量中吗?请注意,只有非常量 AP<T>对象可以被复制,因此临时对象(不能绑定(bind)到非常量引用)不能用您当前的定义进行复制。

关于c++ - 从 g++ 中的辅助函数调用构造函数时出现 "no matching function for call error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5287047/

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