【发布时间】:2013-11-12 19:04:42
【问题描述】:
我正在一个类中创建对象费用:
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 行声明)。
我已经无休止地在谷歌上搜索,但我无法弄清楚哪里出了问题。我找到了一个通过引用传递对象的示例,但我得到了这个错误......
【问题讨论】:
-
一个简单的、可编译的“main()”程序是个好主意。我怀疑类中方法“addExpense”的声明与类外的定义不一样。
-
“声明不兼容”消息中没有特定的
with子文本,如“声明与 more-text-here 兼容”? -
@WhozCraig 对此感到抱歉。完整描述:“错误:声明与“void ExpenseManager::Category::addNewExpense(const
&exp)”不兼容(在“mycomputerandsonon\Category.h”的第 29 行声明)” -
而
ExpenseManager是一个简单的命名空间?或者它是一个封闭类?Expense是同一个命名空间的一部分吗?该消息表明Expense不是同一个命名空间的一部分,但它在头文件中。 -
ExpenseManager 是一个简单的命名空间,Expense 是其中的一部分。
标签: c++ pointers reference constants