0

1 つのクラスでオブジェクト Expense を作成しています。

Expense exp(expense);

そして、参照として別のクラス (Category) に渡します。

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

Category クラスで受け取る方法は次のとおりです。

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;前に追加することでそれを行うことができますclass Category {...

于 2013-11-12T19:20:13.493 に答える