関数のクラスの実装を返したいと思います。この関数はライブラリにあります。ユーザーが返すオブジェクトを破棄しないようにしたい。どうすればこれを達成できますか?ユーザーがオブジェクトを破壊するのを防ぐ方法
EDIT:例。世界へ
インタフェース:
class Base
{
public:
virtual void foo() = 0;
};
Base* GetFoo();
実装 - 内部:
class Bar : public Base
{
public:
void foo() { //Do something}
};
Base* GetFoo()
{
return new Bar
}
元の質問の範囲外ですが、なぜインタフェースベース(バーのインスタンス)を取得するために別の関数を使用しているのかわかりません。なぜファクトリメソッドを使用していないのですか? –
ユーザーが試してみると、モニターが爆発するようにコンピューターをプログラムするだけです。 –
Bar()のコンストラクタをプライベートにしたいと思っていますか? – Jaywalker