2016-12-23 7 views
-3

私はc/c++に慣れていないけど、私はfor loop声明を実装しようとしているとき、私は次のようなエラーがあります。forループで3回配列を取得するにはどうすればよいですか?

error C2296: '*' : illegal, left operand has type 'unsigned char *'

unsigned char *_Orgin_Pixel_; 
unsigned char *_Copy_Pixel_; 
.... 

for (unsigned int i = 0; i < Picture_x_ * Picture_y_; i++) 
{ 
    *(_Copy_Pixel_*3 + i) = _Orgin_Pixel_[i]; 
} 

どのように私はその問題を解決しますか?

+1

あなたは '_Copy_Pixel_ * 3'で何をしようとしていますか?元のピクセルを3ピクセルおきにコピーしようとしていますか? (あなたはmallocを持っていて、配列を新しくして後で解放するのを忘れないでください) – doctorlove

+0

'_Copy_Pixel_ + 3 * i'?または、「_Copy_Pixel_ + 3 * i + 0」、「_Copy_Pixel_ + 3 * i + 1」、および「_Copy_Pixel_ + 3 * i + 2」のいずれかである。 – BLUEPIXY

+1

明確にするために、ポインタを何かで複数にすることは違法です。そうすることは意味をなさない。 – James

答えて

0

この問題は解決しました。

for (unsigned int i = 0; i < Picture_x_ * Picture_y_; i++) 
{ 
    *(_Copy_Pixel_ + i * 3 + 0) = _Orgin_Pixel_[i]; 
    *(_Copy_Pixel_ + i * 3 + 1) = _Orgin_Pixel_[i]; 
    *(_Copy_Pixel_ + i * 3 + 2) = _Orgin_Pixel_[i]; 
} 

2カスケードとして分離したいのですが、どうして違うのですか?

for (unsigned int i = 0; i < Picture_y_ ; i++) 
    for (unsigned int j = 0; j < Picture_x_ ; j++) 
{ 
    _Copy_Pixel_[(i*Picture_y_ + j *3+ 0)] = _Orgin_Pixel_[i*Picture_y_ + j];//B 
    _Copy_Pixel_[(i*Picture_y_ + j*3 + 1)] = _Orgin_Pixel_[i*Picture_y_ + j];//G 
    _Copy_Pixel_[(i*Picture_y_ + j*3 + 2)] = _Orgin_Pixel_[i*Picture_y_ + j];//R 
} 

私は何かが恋しいのですか?

+1

(符号なしint j = 0; j <3; j ++)の場合、for(unsigned int i = 0; i Lundin

関連する問題