继承嵌套类型的模板实例化

时间:2015-08-12 16:40:07

标签: c++

所以我没能找到一种方法来获得以下编译。任何可能的解决方法?

#include <vector>

class A : public std::vector<A::B>
{
public:
    enum class B
    {
    };
};

int main()
{
}

2 个答案:

答案 0 :(得分:1)

您可以在基类中提取B

struct P {
    enum class B { /* ... */ };
};

struct A : P, std::vector<P::B> {
    using P::B;
};

答案 1 :(得分:0)

你做不到。如果没有定义A::B,则无法使用A

从设计的角度来看,不鼓励从标准库容器派生。如果不是太麻烦,我建议使用:

class A
{
  public:
    enum class B
    {
    };
    std::vector<B> data;
};
相关问题