通过引用传递对象时出错

时间:2009-08-02 11:21:16

标签: c++ qt reference

所以我有一个问题......

我有一个方法
void MainWindow :: loadItems(const ArticleStore& store)
{
}

我试着在MainWindow类中调用这样的字母     ArticleStore store();
    loadItems(存储)

我得到了这个错误 mainwindow.cpp:15:错误:没有匹配函数调用'MainWindow :: loadItems(ArticleStore(&)())'
mainwindow.h:19:注意:候选者是:void MainWindow :: loadItems(const ArticleStore&)
ArticleStore定义:
class ArticleStore
{
市民:
    ArticleStore();
};

所以问题是出了什么问题?

2 个答案:

答案 0 :(得分:8)

这是因为

ArticleStore store();
编译器将

解释为函数声明。 这就解释了为什么编译器正在寻找‘MainWindow::loadItems(ArticleStore (&)())’ 你必须写:

Article store; // With no parenthesis

答案 1 :(得分:1)

ArticleStore store; loadItems(store);

注意名称后面缺少括号。编译器将您的版本误认为是名为store的函数的函数原型,不带任何参数并返回ArticleStore实例。然后将此函数指针传递给下一个不起作用的函数。