0

我是 C++ 新手,我想问一下下面的代码。假设我们有 A 类,然后是 A 的子类 B。然后我们有其他 C 类,我希望这个类能够拥有 A 对象或 B 对象。我为此使用了模板。我不确定这是否是好方法。另外我的另一个问题是我读到使用拥有原始指针是一种不好的做法,那么我该如何在这里使用智能指针呢?欢迎任何建议或意见。

#include <iostream>

using namespace std;

class A {

public:
  int x;
  A(int i){x = i;};
  virtual int f(){return x;};
};



class B : public A {
public:
  B(int i): A(i){};
  int f() {return x*2;};
};



class C {
  int y;
  A *pointer = nullptr;     // it can points to A or B object, how can I implement in this code smart pointer unique_ptr<A> pointer
public:
  C(int i): y(i){};

  template <typename T>
  void ff(T &object){ pointer = &object;};

  void fff() {cout <<  pointer -> f() << endl;};
  };



 int main(){
   A a(3);
   B b(4);
   C c(2);
   c.ff(b);   
   c.fff();  
   c.ff(a);
   c.fff();

   return 0;
 }
4

0 回答 0