Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:未声明的标识符_C++_Identifier - Fatal编程技术网

C++ C++;:未声明的标识符

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’:未声明

我对此进行了彻底的研究,但似乎找不到答案

我有一个“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
#包括有
#的“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*
    。间接层次很重要。