相关疑难解决方法(0)

709
推荐指数
11
解决办法
17万
查看次数

多态C++引用

我想知道如何使用引用进行多态性,而不是指针.

为了澄清,请参阅以下最小示例:

class A;

class B {
  public:
    A& a; ///////////////// <- #1
    B();
    void doStuff();
};

class A {
  public:
    virtual void doSmth() = 0;
};
void B::doStuff() {
  a.doSmth();
}

class A1 : public A {
  public:
    void doSmth() {
    }
};

B::B() : a(
    *        ////////////// <- #2
      (new A1)  /////////// <- #3
     ) {
}
Run Code Online (Sandbox Code Playgroud)

这个编译和工作,但这里最重要的一点是,a在行中#1是一个引用,所以为了能够多态地使用它(是一个真正的单词?),如行#3I 所示必须"转换指针参考"通过解除引用它.

这让我觉得有点奇怪,我想知道是否有更好的(在更清洁的意义上)方式.只有我吗?

合理

如果我根本不需要它会很好new,但是当声明(!)时B我不知道如何创建A1(!)的实例和 …

c++ polymorphism reference

21
推荐指数
1
解决办法
2万
查看次数