当从g ++中的helper函数调用构造函数时,“没有匹配的调用错误函数”

时间:2011-03-13 02:43:21

标签: c++ g++

我有一个构造函数

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]’

这段代码出了什么问题?

ADDED

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

似乎可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

您没有显示对Create的来电;试图将调用结果复制到一个新变量?请注意,只能复制非const AP<T>对象,因此临时(不能绑定到非const引用)不能与您当前的定义一起复制。