我是 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;
}