gpt4 book ai didi

c++ - 如何与 CRTP 一起使用?

转载 作者:行者123 更新时间:2023-11-30 02:57:41 25 4
gpt4 key购买 nike

当创建没有附加功能的类型时,我尝试使用using,而不是子类化或使用typedef

我有一个 CRTP 层次结构,我试图在其中向上传播具体类型。

GrandKid 似乎可以正常编译。有没有办法让 GrandKid_2 正常工作?

错误信息

junk.cpp:18:26: error: ‘GrandKid_2’ was not declared in this scope

代码

template<typename T>
struct Parent
{
};

template<typename T>
struct Child
: public Parent<T>
{
};

struct GrandKid :
public Child<GrandKid>
{
};

// using GrandKid_2 = Child<GrandKid_2>; // doesn't compile

int
main( int argv, char* argc[] )
{
GrandKid gk; // ok
}

最佳答案

using , 比如 typedef , 创建别名,而不是新类型。因此,您不能使用 GrandKid_2 来定义自己。

您肯定需要创建一个新类型:

struct GrandKid_2 : Child<GrandKid_2> {};

顺便说一句,你真的想要GrandKid_2吗?做自己的 child ?也许你的意思是 using GrandKid_2 = Child<GrandKid>

关于c++ - 如何与 CRTP 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319512/

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