- 33 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 19:49:20.49 ID:FwsOgvVZ0.net]
- 記述上 int* であるが、上書きされた場合に自動的に中身を delete してくれるポインタの入れ物を、
operator= のオーバーロードなしで定義できますか? ちょっと変な質問なのだけど、native C++なら多分以下コードで出来る。 struct PatHead { int* ptr; int* operator=(int* value){ if (ptr) delete [] ptr; ptr = value; return value; } operator int*(){ return ptr;} }; void test(){ PatHead ph[10]; // int* ph[10] と同じ記述で通るのがミソ ph[1] = (int*)1; int* tgt1 = ph[1]; } 問題はこちらが使っているのはVC++/CLIで、 なぜか value struct では operator= のオーバーロードが出来ず、(C3194) マネージ配列に直接入るのは value型だけなのでちょっと詰んでいる。 なお ref struct なら出来るのだが、こちらは逆に初期化部分で記述が増えるので、 それなら諦めようかな、って感じ。 というわけで回避策を思いつく人がいればお願いします。 何で値型で禁止されているか分かる人も居ればよろしく。
|

|