演算子 new() をオーバーロードして、void* とは異なる戻り値を持つことは可能ですか?
私は2つの構造を持っています:
1 つの構造体 (A) は、データを保持するだけで、その他のデータは保持しません。
2 番目の構造体 (B) は、最初の構造体へのポインターのように機能するように構築されています。
struct A;
struct B
{
private:
A* ptr;
public:
A& operator*() { return (*ptr); };
A& operator->() { return (*ptr); };
};
struct A
{
int data;
B operator&() { B ret; ret.ptr = this; return ret; };
};
アイデアはこれと同じくらい簡単です。直接ではなく、Aへのポインターを処理する外部クラスは必要ありません。
ただし、A のインスタンスを作成できるようにしたいのですが、A の new 演算子をオーバーライドして B のインスタンスを返す方法はありますか? 今は安全上の懸念と削除の処理を気にしないでください。これは、私の問題を説明するための単純で縮小された例です。