template<template<typename>class Derived>
class Base{
    public:
        void interface(){
             static_cast<Derived&>(*this).something();
        }
};
template<typename T>
class Derived:public Base<Derived> {
    ...
};Derived需要一个模板参数,但我只对在Base中派生的类使用未命名的参数。我可以使用这个语法吗?我修了什么?如何访问在Base中派生的?
我可以在基础中使用dType = typename Derived::type进行添加吗?在gcc 10.2版本中,我得到了这样的错误;
test.cpp: In instantiation of 'class Base<Derived<int> >':
test.cpp:22:7:   required from 'class Derived<int>'
test.cpp:30:24:   required from here
test.cpp:13:9: error: invalid use of incomplete type 'class Derived<int>'
   13 |   using dType = typename derived::Type;
      |         ^~~~~
test.cpp:22:7: note: declaration of 'class Derived<int>'
   22 | class Derived:public Base<Derived<T>>{我只是在代码中使用dType = Derived::Type进行添加。
发布于 2021-06-22 19:25:02
您可以在Derived中显式地为模板参数指定一个名称
template<typename Derived>
class Base{
    public:
        void interface(){
             typename Derived::type some_variable;
             static_cast<Derived&>(*this).something();
        }
};
template<typename T>
class Derived:public Base<Derived<T>> {
public
    using type = T;
    ...
};https://stackoverflow.com/questions/68082603
复制相似问题