包括头文件(包括它们自己)
Including header files (including themselves)
>假设我有 3 个类。 1 个基类和 2 个派生类。 如果我把这 3 个放在单独的头文件中,如何正确地将它们全部包含,以便它们都相互查看?我发布了一些我发现的简单示例代码:
多边形.h
// Base class
class Polygon
{
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
三角形.h
class Triangle: public Polygon
{
public:
int area ()
{ return width * height / 2; }
};
矩形.h
class Rectangle: public Polygon
{
public:
int area ()
{ return width * height; }
};
主.CCP
int main ()
{
Rectangle rect;
Triangle trgl;
rect.set_values (4,5);
trgl.set_values (4,5);
cout << rect.area() << 'n';
cout << trgl.area() << 'n';
cin.get();
return 0;
}
我知道我需要什么,我只是不知道如何正确安排它们以使这项工作干净利落,谢谢!
很明显,您的Rectangle
类和Triangle
类需要在它们之前定义Polygon
,因此顺序应该是:
#include "Polygon.h"
#include "Rectangle.h"
#include "Triangle.h"
最后两个可以按任何顺序排列,因为它们不相互依赖。
编辑:
为了澄清为什么这样做,当你写#include "file.h"
时,文件file.h
的内容只是简单地复制到包含行的位置。因此,现在要获得正确的顺序,只需考虑在定义main.cpp
文件本身中的所有类时将保持什么顺序,这就是头文件的顺序。
相关文章:
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 派生类是从基类继承 v 指针并仅使用它,还是也有自己的 v 指针?
- 为什么存储在数组中的地址值与其自己的地址相同,它应该指向某个不同的地址(&arr[0])?
- C++链表节点是指它自己
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 访问另一个类(系统)的非静态字段,就好像它是我自己的字段一样 - 优雅地
- 我是否也应该包括 string.h,即使它存在于头文件中
- 我正在声明一个自定义优先级队列,包括 pair<pair<int,int>int >,如何清除它?
- 是否可以使用TensorFlow训练自己的模块,然后在OpenCV中使用它进行检测
- 张量类,它有自己的存储,但也可以映射外部指针
- 如何在c++中对向量进行切片并分配给它自己
- <vector> 即使它已经包含在例如或其他人中,我是否应该包括<regex>?
- 当我<exception>似乎可以使用 std::exception 时,即使它不包括在内,是否有必要 #include?
- C++链接器错误 - 看不到为什么它没有链接?(包括完整的代码示例)
- 当这个构造函数接受一个初始值设定项列表并委托一个向量时,是什么导致它委托给自己
- C++ std::函数,返回它自己的类型(再次递归类型)
- 为什么我的指针在 main 中取消引用后具有不同的值,而不是在我自己的自定义函数中取消引用它时?
- 它自己类的c++类常量
- g++不包括它所说的用于C++11的文件
- Ceil函数:我们如何自己实现它