gpt4 book ai didi

c++ - 类(class)组成和标题问题

转载 作者:行者123 更新时间:2023-11-28 01:38:32 26 4
gpt4 key购买 nike

目前,我正在编写一个有趣的项目并面临下一个问题。假设我正在创建 class Bank 并且我想定义类 LoginController出发

class Bank{
class LoginController{
//some implemantation
}
class Departure{
//some departure
}
}

为了避免在 Bank.h 中对 Bank 进行大量声明,我想在单独的文件中定义它们

//Bank.h
#include "LoginController.h"
#include "Departure"
class Bank{
class LoginController;
class Departure;
LoginController controller;
Departure departure;
...
}
//LoginController.h
class Bank; //forward declaration
class Bank::LoginController{
bool getAccess(Bank::Departure);
}
//Departure.h
//Departure depends on Bank class aswell
class Bank; //forward declartion
class Bank::Departure{...}

这段代码无法通过巨大的堆栈跟踪进行编译。它可以用一个大的 Bank.cpp 解决,并将其全部写在那里,但是,我不想制作一个巨大的文件。我认为这是一个糟糕的设计问题,但是,如果可以按照我的意愿实现此类,我仍然很感兴趣。即使我在 Bank 中定义了 LoginController && Departure 结构> 我希望每个类都有单独的 cpp 文件,但是,header guard 将在将它包含到一个 cpp 文件后关闭对它的访问。我能看到的最好的解决方案是在一个 header 中定义所有内容,而不是在彼此内部定义。

还有一个问题,是否可以定义一个包含所有包含的头文件,如

#ifndef HeaderFile
#define HeaderFile
#include <iostream>
#include <memory>
....
#endif

根据上一个问题,我了解到这只会打开一个文件,因此我们是否需要为每个文件提供所需的 header 。将相同的 header 包含到不同的文件中似乎很昂贵。

最佳答案

您可以将 #include 指令放在 Bank 类中。

Bank.h

class Bank {
#include "LoginController.h"
#include "Departure.h"
// Bank implementation
}

LoginController.h

class LoginController {
// some implementation
}

出发.h

class Departure {
// some implementation
}

关于c++ - 类(class)组成和标题问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48311206/

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