Qt - C2664 - 无法将参数1从'QList <t>'转换为'QList <t>&amp;'</t> </t>

时间:2015-01-28 18:51:17

标签: c++ qt

使用Qt 5.4并在Qt Creator中编译。

在小部件1中,有一个文件范围的QList:

static QList< Tag * > g_Tags;

请注意,Tag继承自BaseDataObject。 Tag和BaseDataObject都有私有的,未定义的拷贝构造函数和operator =()函数。

同样在小部件1中,有以下构造函数调用:

MoverDialog dlg( g_Tags, this );

以简化形式,MoverDialog.h看起来像:

class MoverDialog : public QDialog
{
Q_OBJECT

public:
    ///////////////////////////////////////////////////////////////////////////////////////////
    //  Constructors/Destructor

    explicit MoverDialog(   QList< BaseDataObject * > & availableList,
                            QWidget * parent = 0 );
    virtual ~MoverDialog();

etc. etc.

编译此代码时,出现以下错误:

D:\MyDocs\Projects\dsb\Src\Apps\RecipeMgr_Qt\Source\Ui\RecipeGeneralWidget.cpp:166: error: C2664: 
'MoverDialog::MoverDialog(QList<T> &,QList<T> &,QWidget *)' : cannot convert parameter 1 
from 'QList<T>' to 'QList<T> &'
with
[
    T=recipemgr::BaseDataObject *
]
and
[
    T=recipemgr::Tag *
]
and
[
    T=recipemgr::BaseDataObject *
]]

如果我将文件范围列表​​的声明更改为:

,编译成功
static QList< BaseDataObject * > g_Tags;

为什么编译失败,文件范围列表​​使用&#34;标记*&#34;如此帖子顶部所示?

0 个答案:

没有答案