添加一个不存在的类前向声明,如class Qwertyuiop
编译和链接没有错误!
我推断,不检查前向声明类的存在 (除非我们在其上调用未定义的方法)。
看起来它们只被视为void *
。
考虑到C / C ++编译过程,这是有道理的。
但是为了提高程序的正确性,有一种检查前向声明类的存在的方法可能是有用的。
答案 0 :(得分:0)
只需写下static_assert(sizeof(Qwertyuiop)>0, "Qwertyuiop is defined")
。
显然你无法检查一个翻译单元是否在另一个TU中定义;这与单独的翻译不兼容。 TU可以按任何顺序编译。