我有一个构造函数
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;
}
似乎可以解决这个问题。
答案 0 :(得分:1)
您没有显示对Create
的来电;试图将调用结果复制到一个新变量?请注意,只能复制非const AP<T>
对象,因此临时(不能绑定到非const引用)不能与您当前的定义一起复制。