【问题标题】:Passing a subclass in a method that expects parent abstract class C++?在需要父抽象类C++的方法中传递子类?
【发布时间】:2021-06-03 18:29:42
【问题描述】:

我正在处理具有以下(简化)结构的作业。

class A
{
public:
  virtual void method;
}

class B : public A
{
some variables;
public:
  void method;
}

class C
{
public:
  void method1(A *a);
}

我有一个 C 实例和 B 实例并尝试调用 c.method1(b),其中 b 是我的 B 类实例。但是,它需要一个 A*,并给我一个错误,说它无法转换B 到 A*。我以为我可以传递 B 的实例,因为它们是 A 的子类。我将如何解决这个问题,以便我能够将 B 传递给方法,因为我知道我无法更改方法参数作业的一部分?

【问题讨论】:

标签: c++ class inheritance methods


【解决方案1】:

您无法将B 转换为A*,但可以将B* 转换为A*。我想你只是忘记了这个& 运算符:

main()
{
    B b;
    C c;
    c.method1(&b);
}

【讨论】:

  • 啊,这行得通,非常感谢。之后出现了一些其他错误,但由于可以正常工作,所以让这些错误正常工作
猜你喜欢
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
相关资源
最近更新 更多