2010-11-25 15 views
1

無効にクラスポインタのインクリメント/デクリメント演算子

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

これは、おそらくインライン関数であり、コンパイルしようとするほとんどのファイルに含まれている 'strlen()'の実装を吸うでしょう。 – MSalters

+2

@MSalters OPはAへのポインタのみを要求し、strlen(A *)は提供されません。 – Simone

+0

'' A''の配列を作成し、それを繰り返したい場合、私はどうしたらいいですか? – jalf

答えて

1

行うことは不可能です。

私はあなたが予期しないエラーを回避するためにそれをやってみたいと思いますので、私は彼らが、エラーの確率を増加させるため、スマート(お尻)ソリューションは、(など、いくつかのポインタのようなラッパークラスを考案含む)は適用されないと思います:)

+0

>>意図していないエラーを避けるために、これを実行したいと思っています。はい、そうです。 – StNickolay

1

生ポインタを付ける場合は不可能です。

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

2

あなたはこれがpAのAオブジェクトへのconstポインタになり

A * const pA = new A; 

としてのpAを宣言することができます。ポインタは初期化後には変更できませんが、ポインタの内容は変更できます。

はconstオブジェクトへのポインタである

const A *pA = new A; 

を比較します。

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

A * const pAs = new A[size]; 

for (A * iter = pAs; iter < pAs+size; ++iter) 
{ 
    // do stuff 
}