gpt4 book ai didi

c++ - 成员类可以从它的父类继承吗?

转载 作者:可可西里 更新时间:2023-11-01 16:37:42 26 4
gpt4 key购买 nike

在考虑对一个奇怪问题的“创造性”(即奇怪的)解决方案时,一个特别的想法激发了我的好奇心。这不是我可能会使用的想法,但我仍然想知道根据标准它是否合法。

一个简单的例子是...

class base_t
{
private:
// stuff

public:
// more stuff

class derived_t : public base_t // <--- weirdness here
{
// ...
};
};

部分奇怪 - 因为 derived_t 继承自包含 derived_tbase_t,所以 derived_t 似乎包含本身。

所以 - 这是一个与 curiously recurring template pattern 类似的有效但奇怪且可怕的东西吗? , 还是违法的?

编辑 - 我或许应该提一下,我想到这个的原因是试图避免一些命名空间污染。将一个类作为成员避免引入另一个全局类,但第二个类需要与第一个类共享很多内容。

如果它只是一对类,那不是问题,但这是针对代码生成器的。

最佳答案

这是合法的,但可能不是您安排代码的方式。基类在使用时必须是完整的,但直到定义的右大括号才完成。所以尝试前向声明嵌套类:

class base_t
{
private:
// stuff

public:
// more stuff

class derived_t;
};

class base_t::derived_t : public base_t
{
// ...
};

关于c++ - 成员类可以从它的父类继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13327502/

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