gpt4 book ai didi

c++ - 在多个源目录中转发声明;模板实例化

转载 作者:太空宇宙 更新时间:2023-11-04 15:54:54 24 4
gpt4 key购买 nike

我正在寻找一本不错的书,它是处理类前向声明​​尤其是类的引用资料。当源位于多个目录中时,例如。 dirA 中的 A 类在 dirB 中的 B 类中向前声明?这是怎么做到的?

此外,是否有关于模板问题、高级用途和实例化问题的 Material ,高度赞赏?

谢谢。

最佳答案

前向声明与项目的目录结构无关。您可以转发声明一些甚至不存在于您的项目中的东西。它们多用于解决类之间的循环引用和在不需要完整的类声明时加快编译速度,相应的#include 可以用前向声明代替。

要确定前向声明何时足够,sizeof() 查询通常可以回答这个问题。例如,

class Wheel;

class Car
{
Wheel wheels[4];
};

在此声明中,不能使用前向声明,因为编译器无法确定 Car 的大小:它不知道车轮包含多少数据。换句话说,sizeof(Car)未知。

还有关于模板,如果模板类包含模板参数的数据成员(但它们的指针可以),则不能将前向声明的类用作模板参数。例如,

template<class T> class pointer
{
T *ptr;
};

class Test;
pointer<Test> testpointer;

是合法的但是

std::vector<Test> testvector不会编译。

由于上述限制,前向声明的类通常用作指针或引用。

我不知道有没有关于这个主题的书,但你可以看看this section在 C++ FAQ Lite 上。

关于c++ - 在多个源目录中转发声明;模板实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1172281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com