包括头文件(包括它们自己)
Including header files (including themselves)
假设我有 3 个 classes。 1 个基础 class 和两个派生的 classes。如果我将这 3 个放在单独的头文件中,我如何正确地包含它们以便它们都能看到彼此? Ill post 我找到了一些简单的示例代码:
Polygon.h
// Base class
class Polygon
{
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
triangle.h
class Triangle: public Polygon
{
public:
int area ()
{ return width * height / 2; }
};
rectangle.h
class Rectangle: public Polygon
{
public:
int area ()
{ return width * height; }
};
main.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
的内容只是复制到 include 行的位置。所以,现在为了获得正确的顺序,想想在 main.cpp
文件本身中定义所有 类 时要保持什么顺序,这就是头文件的顺序。
假设我有 3 个 classes。 1 个基础 class 和两个派生的 classes。如果我将这 3 个放在单独的头文件中,我如何正确地包含它们以便它们都能看到彼此? Ill post 我找到了一些简单的示例代码:
Polygon.h
// Base class
class Polygon
{
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
triangle.h
class Triangle: public Polygon
{
public:
int area ()
{ return width * height / 2; }
};
rectangle.h
class Rectangle: public Polygon
{
public:
int area ()
{ return width * height; }
};
main.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
的内容只是复制到 include 行的位置。所以,现在为了获得正确的顺序,想想在 main.cpp
文件本身中定义所有 类 时要保持什么顺序,这就是头文件的顺序。