gpt4 book ai didi

c++ - 从 C++ 中的 protected 类继承

转载 作者:太空狗 更新时间:2023-10-29 22:53:55 25 4
gpt4 key购买 nike

假设我有以下声明:

class Over1
{
protected:
class Under1
{
};
};

我知道我可以做到以下几点:

class Over2 : public Over1
{
protected:
class Under2 : public Under1
{
};
};

但是有没有办法在没有 Over2 的情况下声明 Under2?

因为您必须扩展 Over1 才能使用 Under1 的任何派生词,这可能看起来很愚蠢,但在这种情况下可能有 30 种不同的 Under 风格。我可以:

  • 将它们全部放在 Over1 中:不有吸引力,因为 Over2 可能只使用1 或 2 个
  • 将它们分别放入他们自己的版本 Over : Not从那时起你就会有吸引力从几乎继承同类。
  • 想办法创造未创建的 Under1 的 child Over1的 child

这可能吗?

谢谢。

最佳答案

使用模板和显式特化,您只需在 Over1 中添加一个类声明即可做到这一点。

class Over1
{
protected:
class Under1
{
};

template <typename T>
class UnderImplementor;
};

struct Under2Tag;
struct Under3Tag;
struct Under4Tag;

template <>
class Over1::UnderImplementor<Under2Tag> : public Over1::Under1
{
};

template <>
class Over1::UnderImplementor<Under3Tag> : public Over1::Under1
{
};

template <>
class Over1::UnderImplementor<Under4Tag> : public Over1::Under1
{
};

希望这对您有所帮助。

关于c++ - 从 C++ 中的 protected 类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/153707/

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