gpt4 book ai didi

c++ - 使用嵌套类继承模板类

转载 作者:太空狗 更新时间:2023-10-29 20:20:24 26 4
gpt4 key购买 nike

我想创建一个继承自模板类 A 的类 B。并且我希望 B 的嵌套类 E 成为此继承中的模板参数。更直观:

template <class T>
class A {
}

class B : public A<B::E> {
class E {
int x;
}
}

class C : public A<C::E> {
class E {
int x;
int y;
}
}

我认为问题是编译器在处理 B 的声明时不知道类 B 将有一个嵌套的类 E,因为我收到错误:

no member named 'E' in 'B'

我看过这个similar question , 但我想确认在放弃这种方法之前没有直接解决此冲突的方法。

谢谢!

最佳答案

我认为这不能直接完成。

一个明显的方法是在其他命名空间中定义 B::EC::E(至少让它们远离全局命名空间) ,然后在“父”类中使用它们:

template <class T>
class A { /* ... */ };

namespace B_detail {
class E { /* … */ };
}

class B : public A<B_detail::E> { /* ... */ };

namespace C_detail {
class E { /* ... */ };
}

class C : public A<C_detail::E> { /* ... */ };

根据情况,您很有可能还需要/想要声明 *_detail::E 是 B/C 的 friend

关于c++ - 使用嵌套类继承模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51548938/

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