1

をとる関数がありますが、const D3DVECTOR3 *pos事前に宣言する理由はありません。私にとって最も論理的な解決策は、newを使用することでした。

Function(
    //other parameters,
    new D3DXVECTOR3(x, y, 0));

しかし、私はそれについてどうやって行くのかわかりませんdeleting。私の次の考えは、次の&ように演算子を使用することでした。

Function(
    //other parameters,
    &D3DVECTOR3(x, y, 0));

しかし、これがこれを行うための有効な方法であるかどうかはわかりません。(エラーは発生しませんが、エラーが発生しないものが多く、必ずしも適切ではありません)。だから、、、、または私が見落としている他のテクニックを使用する必要new&ありますか?

4

2 に答える 2

5

address-of演算子を一時的に直接呼び出すことはできません(MSVCは、これがより高い警告レベルでも標準C ++ではないことを通知します)。あなたがするかもしれないことを除いて

Function(
//other parameters,
&(D3DXVECTOR3 const&)D3DXVECTOR3(x, y, 0));

しかし、これは嫌です。ローカル変数を宣言し、そのアドレスを渡すだけです。

于 2010-03-11T21:38:38.347 に答える
0

関数呼び出しの前にオブジェクトをインスタンス化せず、後で削除する理由はありません。また、注目に値する、

Function(
//other parameters,
new D3DXVECTOR3(x, y, 0));

Functionがポインタを返さないか、ある種のメモリプールにポインタを入れないと、メモリリークが発生すると思います。お役に立てれば。

于 2010-03-11T21:52:04.010 に答える