1

コード例:

A* pA = new A;

コンパイル段階でポインターのインクリメント/デクリメント演算子を避ける必要があります。

pA++; // MUST failed during compilation phase
4

3 に答える 3

2

pA を次のように宣言できます。

A * const pA = new A;

これにより、pA は A オブジェクトへの const ポインターになります。初期化後にポインターを変更することはできませんが、その内容は変更できます。

比較

const A *pA = new A;

const A オブジェクトへのポインタです。

A オブジェクトの配列を反復処理する場合は、別のポインターを取得します。

A * const pAs = new A[size];

for (A * iter = pAs; iter < pAs+size; ++iter)
{
    // do stuff
}
于 2010-11-25T17:15:08.247 に答える
1

それは不可能です。

意図しないエラーを回避するためにそれを行いたいと思うので、エラーの可能性が高くなるため、スマートな(お尻の)ソリューションは適用されないと思います(ポインターのようなラッパークラスの発明などを含む):)

于 2010-11-25T16:05:58.723 に答える
1

生のポインターに固執したい場合、それは不可能です。

その演算子 (別名スマート ポインター) を実装しないクラスでラップする必要があります。

于 2010-11-25T16:07:53.580 に答える