C++ C++;:未声明的标识符
我对此进行了彻底的研究,但似乎找不到答案 我有一个“bank”类,它自然有一个向量。以下是有问题部分的函数之一:C++ C++;:未声明的标识符,c++,identifier,C++,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’:未声明
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
#包括有#的“bank.h”
#包括有#包括“account.h”
#的“bank\u account.h”
#包括有#的“bank\u account.h”
#的“bank\u account 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*
但是我没有看到类
帐户中方法open
的任何定义
因此,您不能通过acc
指针调用open
。
最接近的匹配是方法openAccount
,但该方法当前已被注释掉,无法使用。
其次,您的代码调用帐户。push_back()
但就您向我们展示的代码而言,银行
没有会员账户
你也需要给我们看那个部分。
尝试将account.h
包含在问题的cpp文件中。最好包含您使用的内容,而不要依赖其他包含文件来包含您需要的内容
您似乎正在泄漏帐户
对象。它们永远不会被释放(无论帐户是否存在)
是否account
类位于不同的命名空间中?是否可能您的某些头具有相同的头保护?看起来你认为应该包括一个标题,但事实并非如此
所以确保你没有
#if !defined( BANK_H )
#define BANK_H
#endif //BANK_H
或者多个文件中的类似内容。每个头文件都应该有防护,但不是相同的:)不是主要错误,但仍然是:如果帐户存在,则返回帐户\u exists;如果没有,你根本就不归还任何东西!但是您有返回int的合同。谢谢您的快速回复!我已经用account类编辑了原始问题。有问题的行是在第一段代码中带有“acc”的行。account
是否同时命名了一个类型和一个成员对象?不,银行有一个“bank\u account\u account;”,但没有帐户。那么o->account
指的是什么?account
的类型是account*
。间接层次很重要。