如何在子类中使用模板基类的嵌套类型?

How to use nested type of template base class in sub class?

提问人:Սոկրատ Գալստյան 提问时间:8/5/2023 更新时间:8/5/2023 访问量:43

问:

我有这样的代码:

template <typename T>
struct bar
{
        typedef T type;
};

template <typename T>
struct sub_bar : bar<T>
{
        typename bar<T>::type x;
};

我知道这是推荐的方式,但我想写这样的代码:

template<typename T>

struct sub_bar : bar<T>

{
        ...

        type x;

};

怎么做?我想我可以做这样的事情:


template<typename T>

struct sub_bar : bar<T>

{
        typedef typename bar<T>::type type;

        type x;

};

什么是类型是模棱两可的吗?但是,此代码适用于 gcc9 编译器。

C++ 模板 子类 superclass nested-types

评论


答:

3赞 Davis Herring 8/5/2023 #1

我倾向于使用强制合格查找和写入的技巧

using typename sub_bar::type;

以避免重复基类的模板参数(并避免在搜索两个类的奇怪情况下出现潜在的歧义),但您编写的内容绝对有效。type