0

我在一类中创建对象费用:

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)”不兼容(在“mycomputerandsonon\Category.h”的第 29 行声明)”。

我已经无休止地搜索了这个,我无法弄清楚什么是错的。我找到了一个通过引用传递对象的示例,但我得到了这个错误......

4

1 回答 1

1

在注释中提供的头文件中Expense,Category.h 中不包含声明的文件。你至少应该转发声明Expense(实际上,转发声明而不是不必要的包含以避免使编译变慢)。您可以通过添加class Expense;before来做到这一点class Category {...

于 2013-11-12T19:20:13.493 回答