gpt4 book ai didi

C++模板代码顺序解析/CRTP

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:10 25 4
gpt4 key购买 nike

有人可以提示编译器如何处理表达式

class DerivedA: public ParentTemplateClass<DerivedA>{
}

对我来说,它看起来像:

这个男孩的父亲是这个男孩的“儿子”

我的意思是,在不知道父类的确切“描述”的情况下,如何完成类 DerivedA 的“解析”对我来说并不明显。好像不能。所以父类必须在子类之前处理,但在这种情况下,父类依赖于子类......我被困在那里。

是的,网络上有一些文章描述了这种东西的用法,例如一篇关于 Curiously Recurring Template Pattern 的文章( http://en.wikibooks.org/wiki/More_C++_Idioms/Curiously_Recurring_Template_Pattern ) 但这不是某种标准或接近。必须有明确的行为描述,例如操作排序,不是吗?

回答:谢谢大家。是的,前向声明类比对我来说停止伤害我的大脑似乎是合理的。由于其隐藏的子语言性质,模板对我来说仍然是最先进的,我不能只是 g++ -E :)

最佳答案

在您的代码说class DerivedA 之后,符号DerviedA 被声明。此时它可以用作模板参数。 C++ 编译器对代码进行多次传递,因此在解析时编译器将“相信”您的意图是正确的,并且最终将获得该类的定义(当它即将实例化模板时,即您实际上使用该类型)。如果没有,它会在那个时候提示。如果您在声明中使用前向声明的类但在使用它之前没有提供定义,则会发生类似的情况。

关于C++模板代码顺序解析/CRTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12369500/

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