类组成和标头问题
class composition and header problems
本文关键字:问题 更新时间:2023-10-16
目前,我正在写一个有趣的项目,并面临下一个问题。假设我正在创建class Bank
并且我想定义类LoginController
和Departure
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 文件,但是,标头保护将在将其包含在 cpp 文件之一后关闭对它的访问。我能看到的最好的解决方案是在一个标头中定义所有内容,而不是彼此内部。
还有一个问题。是否可以定义 1 个包含所有包含的头文件
#ifndef HeaderFile
#define HeaderFile
#include <iostream>
#include <memory>
....
#endif
从上一个问题中,我知道这将只为一个文件打开,因此我们是否需要为每个文件提供所需的标头。将相同的标头包含在不同的文件中似乎很昂贵。
您可以将#include
指令放在Bank
类中。
Bank.h
class Bank {
#include "LoginController.h"
#include "Departure.h"
// Bank implementation
}
LoginController.h
class LoginController {
// some implementation
}
Departure.h
class Departure {
// some implementation
}
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题