コード例:
A* pA = new A;
コンパイル段階でポインターのインクリメント/デクリメント演算子を避ける必要があります。
pA++; // MUST failed during compilation phase
コード例:
A* pA = new A;
コンパイル段階でポインターのインクリメント/デクリメント演算子を避ける必要があります。
pA++; // MUST failed during compilation phase
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
}
それは不可能です。
意図しないエラーを回避するためにそれを行いたいと思うので、エラーの可能性が高くなるため、スマートな(お尻の)ソリューションは適用されないと思います(ポインターのようなラッパークラスの発明などを含む):)
生のポインターに固執したい場合、それは不可能です。
その演算子 (別名スマート ポインター) を実装しないクラスでラップする必要があります。