【问题标题】:child object in parent class method父类方法中的子对象
【发布时间】:2014-03-27 01:06:47
【问题描述】:

在回复this question 时,我注意到类似以下内容:

class A
{
  public:
  A();
  void foo();
};

class B: public A
{
  public:
  B();
};

void A::foo()
{
  B bar;

  //more code
}

直觉上,我想说这是做不到的,但我不确定。不管这样做是不是个好主意,有谁知道这是否违法(以及为什么)?

编辑:我匆匆写了这个例子,我编辑了代码,所以构造函数是公开的。

【问题讨论】:

  • 我看不出为什么做不到,它compiles fine
  • 抱歉,链接已修复
  • 你不能说“不顾一切”并假装你是认真的。
  • @Kerrek SB 我是认真的,我只是不想让人们写下“不要那样做,这是个坏主意”的问题。我不认为编译器会允许它,我不明白为什么会这样。

标签: c++ polymorphism


【解决方案1】:

您对为什么似乎无法完成有一些直观的感觉,我认为这是一个好兆头。当基类使用派生类时,这两个类是相互依赖的。这是一种经常遇到但值得尝试避免的模式。编译器当然不会抱怨相互依赖的类。

【讨论】:

    【解决方案2】:

    是什么让你认为它做不到?您给出的示例无效,因为构造函数是私有的。但是在制作AB 结构之后,它工作得非常好(例如here)。没有规定说基类函数不能有派生类对象。

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 1970-01-01
      • 2011-04-17
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      相关资源
      最近更新 更多