gpt4 book ai didi

c++ - 如何在模板中使用嵌套的 typedef?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:14 26 4
gpt4 key购买 nike

我想导出一个类型 Test来自模板类型 Base我专注于派生类型(即 Base<Test> )。

在模板化类型中,我想使用在派生类型(模板参数)中定义的 typedef。

但是,我得到了这个编译错误:

error C2039: 'X' : is not a member of 'Test'

这是代码片段:

template <typename T>
class Base
{
protected:
void func(typename T::X x) {}
};


class Test : public Base<Test>
{
public:
typedef int X;
};

这是否可行,如果可行,我需要做的修复是什么?

(我看到了针对此类问题的几个答案,但看起来我的场景并没有通过前缀类型名来修复 - 它是否与从专门用于派生类型的模板派生有关?)

最佳答案

除了 typedef,您还可以将类型声明为基类中的第二个模板参数:

template <typename T, typename X>
class Base
{
protected:
void func(X x) {}
};


class Test : public Base<Test, int>
{
public:
// typedef int X;
};

关于c++ - 如何在模板中使用嵌套的 typedef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014922/

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