私は 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;
}