C++:未声明的标识符
C++: undeclared identifier
我已经对此进行了彻底的搜索,但似乎找不到答案。
我有一个"bank"类,它自然有一个向量。以下是有问题部分的函数之一:
int bank::open(op *o, int id)
{
account *acc = new account();
if (search(o->account))
return ACCOUNT_EXISTS;
accounts.push_back(acc->open(o, id));
}
我得到了一个"语法错误:标识符'account'和"'acc':未声明的标识符错误。
这个.cpp#include "bank.h"
有#include "bank_account.h"
(是银行个人账户)有#include "account.h"
,绝对没有办法循环引用。
如果我键入account::
,作用域是可见的,如果我右键单击并搜索声明,它(VS2008)就会找到它。
这是account.h
类声明
class account
{
public:
account(void) {}
~account(void) {}
int number;
int password;
int bal;
//void openAccount(op *o, int id);
void deposit(int amount, int id);
int withdraw(int amount, int id);
void balance(int id);
void close(int id);
int comission(float percentage);
void log(int msg, int id, int amount=0);
};
谢谢你的帮助。。。
首先,在这一行:
accounts.push_back(acc->open(o, id));
您正在调用acc->open()
,而acc
的类型为account*
但是我在类account
中没有看到方法open
的任何定义
因此,不能通过acc
指针调用open
。
最接近的匹配是方法openAccount
,但该方法当前已被注释掉,无法使用。<小时>其次,您的代码调用accounts.push_back()
但就您向我们展示的代码而言,bank
没有成员accounts
你也需要给我们看那部分
小时>
-
在问题中尝试将
account.h
包含在cpp文件中。最好包含您使用的内容,而不是依赖其他包含文件来为您包含内容。 -
您似乎正在泄漏
account
对象。他们永远不会被释放(无论帐户是否存在)
可能是account
类在不同的命名空间中吗?
您的某些标头是否可能具有相同的标头保护?看起来你认为应该包括一个标题,但事实并非如此。
所以要确保你没有
#if !defined( BANK_H )
#define BANK_H
#endif //BANK_H
或者多个文件中类似的内容。每个头文件都应该有保护,但不是相同的:)
相关文章:
- #ifdef和未声明的标识符
- 未声明的标识符编译暗黑破坏神 2 程序"muleview"
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 使用未声明的标识符"sqrt"?
- 对类 (C++) 中的私有变量使用未声明的标识符
- 我的代码中有错误,未声明的标识符
- 未定义的标识符/未声明
- 错误:在 C++ 'std'使用未声明的标识符
- 在编译器之前检测未声明的标识符
- 使用未声明的标识符'temp'
- 使用未声明的标识符"yylex"和"yyin"?
- 使用"class"关键字,后跟未声明的标识符
- 未声明的标识符错误,但变量定义正确 (?)
- C2065 'cout':未声明的标识符
- C++模板模板参数中未声明的标识符
- 错误:在 C++ 目标 c 混合'self'使用未声明的标识符
- C++循环依赖关系,未声明的标识符
- 我的函数调用 (C++) 中的未声明标识符
- 未找到标识符和未声明的标识符