Ошибка при передаче объекта по ссылке - PullRequest
1 голос
/ 02 августа 2009

Так что у меня проблема ....

У меня есть метод
void MainWindow :: loadItems (const ArticleStore & store)
{
}

что я пытаюсь вызвать, как это внутри класса MainWindow
ArticleStore store ();
loadItems (магазин)

И я получаю эту ошибку
mainwindow.cpp: 15: ошибка: не соответствует функция для вызова for MainWindow :: loadItems (ArticleStore (&) ()) ’
mainwindow.h: 19: примечание: кандидаты: void MainWindow :: loadItems (const ArticleStore &)
Определение ArticleStore:
Класс ArticleStore
{
общедоступный:
ArticleStore ();
};

Итак, вопрос в том, что пошло не так?

Ответы [ 2 ]

8 голосов
/ 02 августа 2009

Это потому что

ArticleStore store();

интерпретируется компилятором как объявление функции. Это объясняет, почему компилятор ищет ‘MainWindow::loadItems(ArticleStore (&)())’ Вы должны написать вместо:

Article store; // With no parenthesis
1 голос
/ 02 августа 2009
ArticleStore store; loadItems(store);

Обратите внимание на отсутствие скобок после имени. Компилятор ошибочно принимает вашу версию за прототип функции для функции с именем store, не беря аргументов и возвращая экземпляр ArticleStore. Затем вы передаете указатель на следующую функцию, которая не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...