如何通过嵌套类继承模板类来构建一个长尾词?

2026-04-16 19:152阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计317个文字,预计阅读时间需要2分钟。

如何通过嵌套类继承模板类来构建一个长尾词?

我想创建一个继承自模板类B的类A。我希望B的嵌套类E成为此继承中的模板参数。具体如下:

cpptemplateclass A {};

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

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

我认可这种做法。

我想创建一个继承自模板类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 :: E和C :: 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的朋友.

本文共计317个文字,预计阅读时间需要2分钟。

如何通过嵌套类继承模板类来构建一个长尾词?

我想创建一个继承自模板类B的类A。我希望B的嵌套类E成为此继承中的模板参数。具体如下:

cpptemplateclass A {};

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

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

我认可这种做法。

我想创建一个继承自模板类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 :: E和C :: 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的朋友.