gpt4 book ai didi

c++ - 两个文件在c++问题中相互包含

转载 作者:行者123 更新时间:2023-11-28 03:47:34 24 4
gpt4 key购买 nike

我正在为一个开源库做一些贡献,但我在修改其他人的代码时遇到了麻烦。以前图书馆有一个名为 IntervalT.h 的文件和一个名为 Curves.h 的文件在文件 Curves.tcc 中实现, 和 Interval.h包括 Curves.h因为某些原因。现在我需要使用 IntervalT.hCurves.h ,但是当我尝试使用类 IntervalT<NT> 时在 IntervalT.h 中定义,编译器给我错误(我已经在 IntervalT.h 文件的开头包含了 Curves.h):

../../../inc/CORE/poly/Curves.h:1337:3: error: ‘IntervalT’ does not name a type

我的问题是:由于我以前从未有过这样的经历,“does not name a type”错误是否与c++头文件相互包含有关?还是其他错误导致了这个错误?如果是这样,我应该如何编写程序让 Curves.h 看到 IntervalT.h?

顺便说一下,这段代码的组织方式很奇怪。 Curves.tcc实际上包含在 Curves.h 中,这是我们通常做的相反的方式。这样做有什么特别的理由吗?还是真的不重要?什么是.tcc毕竟是扩展?

最佳答案

我只能猜测(因为你可以随意命名你的文件),但是 .tcc 扩展名是 .cc 扩展名的修改(这只是C++ 代码),但 t 代表 templateCurves.h 包含 Curves.tcc 这一事实证实了这一点,这是一种将接口(interface)与模板实现分离同时又不扰乱编译器的常用技术期望在同一个文件中声明和定义模板代码(否则会出错)。 See this answer to get a better idea .

does not name a type 可能是 IntervalT 是一个模板,而您没有提供模板参数(或者这可能是一个不同的错误,我没有没试过),或者即使文件名为 IntervalT.h,它也不包含名为 IntervalT 的类,或者它位于不同的命名空间中。在我们做出更好的诊断之前,您必须提供更多信息。

关于c++ - 两个文件在c++问题中相互包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061125/

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