我在阅读的书中发现了像这样的代码:
namespace sf
{
class RenderWindow;
}
class StateStack;
class Player;
class State
{
// Code for the class
};
这些只含有类名和分号的行是什么意思?
我在阅读的书中发现了像这样的代码:
namespace sf
{
class RenderWindow;
}
class StateStack;
class Player;
class State
{
// Code for the class
};
这些是前置声明。它们让下面的代码知道有名为RenderWindow
、StateStack
和Player
的类存在。当编译器看到这些名称被使用时,便满足了编译器。稍后,链接器会找到类的定义。
B.h
中包含了#include "A.h"
,反之亦然,你将得到一个无限循环以及相同类的重复定义问题。 - Code-Apprentice它是一种前置声明,实质上向编译器发出一个信号,全定义将在其他地方跟随。
主要用例是在不需要完整定义的情况下使用,例如如果您有一个类型为T
的指针,则在实例化之前不需要T
的完整定义,因此对于T*
的声明不需要。