2013-11-12 8 views
0

Я создаю объект Expense в одном классе:Невозможно передать объект по ссылке

Expense exp(expense); 

А затем передать его в другой класс (категория) в качестве ссылки:

vector<Category> *ptrCateg = &(impl->categories); 
ptrCateg->at(pos).addNewExpense(exp); 

Вот как я Получать его в классе Категория:

void Category::addNewExpense(const Expense &exp){ 
    } 

Вот как я определяет метод addNewExpense в заголовочном файле:

void addNewExpense(const Expense &exp); 

Я не могу понять, почему я получаю ошибку здесь: void Category::**addExpense**(const Expense &exp){. В нем говорится: «Ошибка: объявление несовместимо с« void ExpenseManager :: Category :: addNewExpense (const & exp) »(объявлено в строке 29« mycomputerandsonon \ Category.h »)».

Я бесконечно искал эту историю, и я не могу понять, что не так. Я нашел пример передачи объектов по ссылкам, и все же получаю эту ошибку ...

+0

Простая, скомпилированная программа «main()» была бы хорошей идеей. Я подозреваю, что объявление метода «addExpense» в классе не совпадает с определением вне класса. – paercebal

+0

Нет конкретного подтекста 'с' для сообщения« Декларация несовместимо », как в« Декларация совместима с большим текстом здесь »? – WhozCraig

+0

@WhozCraig извините за это. Полное описание: «Ошибка: объявление несовместимо с« void ExpenseManager :: Category :: addNewExpense (const & exp) »(объявлено в строке 29« mycomputerandsonon \ Category.h »)« –

ответ

1

В файле заголовка, указанном в комментариях, файл, в котором объявлен Expense, не включен в категорию .h. Вы должны хотя бы направить объявление Expense (фактически, do вперед объявить вместо ненужного включения, чтобы избежать медленного усложнения). Вы можете сделать это, добавив class Expense; до class Category {....

+0

Не совсем, нет ... Недавно я редактировал имя метода и обновлял информацию в stackoverflow (здесь), и мне потребовалось некоторое время, чтобы редактировать все. Извини за это. –

+0

@Fractal Теперь, когда я внимательно прочитал, проблема заключается в «Расходе». Является ли декларация 'Expense' включенной в Category.h? Являются ли объявления в Category.h внутри пространства имен ExpenseManager? – Etherealone

+0

благодарю вас за ваше время :) Я так считаю, вот мой заголовочный файл: http://pastebin.com/j0A6nheT –

Смежные вопросы