【发布时间】:2023-03-18 18:32:02
【问题描述】:
我注意到我正在阅读的书中有这样的代码行:
namespace sf
{
class RenderWindow;
}
class StateStack;
class Player;
class State
{
// Code for the class
};
只有类、类名和分号的行是什么意思?
【问题讨论】:
标签: c++
我注意到我正在阅读的书中有这样的代码行:
namespace sf
{
class RenderWindow;
}
class StateStack;
class Player;
class State
{
// Code for the class
};
只有类、类名和分号的行是什么意思?
【问题讨论】:
标签: c++
这些是前向声明。他们让以下代码知道有名称为RenderWindow、StateStack 和Player 的类。当编译器看到这些名称被使用时,这会让编译器满意。稍后链接器会找到类的定义。
【讨论】:
B.h 中使用 #include "A.h",反之亦然,您会得到无限循环以及同一类的重复定义。
这是一个前向声明,本质上它向编译器发出信号,完整的定义将跟随在其他地方。
这种情况的主要用例是您不需要完整定义的情况,例如,如果您有一个 T 类型的指针,则在实例化之前您不需要 T 的完整定义,因此它不需要需要声明T*。
【讨论】: