gpt4 book ai didi

c++ - 2个类之间的双向关联

转载 作者:太空狗 更新时间:2023-10-29 20:05:05 25 4
gpt4 key购买 nike

我想在两个类之间创建双向关联。例如,class Aclass B 作为其私有(private)属性,而 class Bclass A 作为其私有(private)属性。

我得到的错误主要是:

Error   323 error C2653: 'Account' : is not a class or namespace name   
Error 324 error C2143: syntax error : missing ';' before '{'

(我收到很多这样的错误)

我相信这些错误与我在 account.h 中包含 paymentMode.h 的方式有关,反之亦然。我尝试评论其中一个类(class)中的一个内容,并且一切正常。请问如何在我仍然可以在帐户和 paymentMode 类之间建立双向关联的同时消除此类错误?

谢谢!

附件是我写的代码。

    //paymentMode.h

#pragma once
#ifndef _PAYMENTMODE_H
#define _PAYMENTMODE_H

#include <string>
#include <iostream>
#include <vector>
#include "item.h"
#include "account.h"

using namespace std;

class PaymentMode
{
private:
string paymentModeName;
double paymentModeThreshold;
double paymentModeBalance; //how much has the user spent using this paymentMode;
vector<Account*> payModeAcctList;

public:
PaymentMode(string);
void pushItem(Item*);

void addAcct(Account*);

string getPaymentModeName();
void setPaymentModeName(string);

void setPaymentModeThreshold(double);
double getPaymentModeThreshold();

void setPaymentModeBal(double);
double getPaymentModeBal();
void updatePayModeBal(double);

int findAccount(string);
void deleteAccount(string);

};

#endif



//account.h

#pragma once
#ifndef _ACCOUNT_H
#define _ACCOUNT_H

#include <string>
#include <iostream>
#include <vector>
#include "paymentMode.h"

using namespace std;

class Account
{
private:
string accountName;
//vector<PaymentMode*> acctPayModeList;
double accountThreshold;
double accountBalance; //how much has the user spent using this account.

public:
Account(string);

//void addPayMode(PaymentMode*);
//int findPayMode(PaymentMode*);

string getAccountName();
void setAccountName(string);

void setAccountThreshold(double);
double getAccountThreshold();

void setAccountBal(double);
double getAccountBal();
void updateAcctBal(double);

};

#endif

最佳答案

你有一个循环包含依赖,但在这种情况下,因为类 A 只包含类 B 的指针容器,反之亦然,你可以使用前向声明,并将包含放在实现文件中。

所以,而不是

 #include "account.h"

使用

class Account;

无关:不要将 using namespace std 放在头文件中,如果可能,不要放在任何地方。参见 here有关该问题的更多信息。

关于c++ - 2个类之间的双向关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com