2011-10-28 4 views
1

私はOpenCVでCvPoint構造体を使用しており、構造体のフィールドにxyの値を割り当てる必要があります。CvPointの値を設定するには

は、ここに私のコードです:

CvPoint* P1; 
P2[0].x=32; 

しかし、値を設定しようとしているときにプログラムが常にブロックします。

これらの値を設定する方法については、

+0

あなたが名前のポインタ変数を作成した 'P1'&あなたは変数' P2'をポインタに値を代入しようとしていますか? 'cvPoint P1 = cvPoint(32,32); 'のようにする必要があります。 –

+0

質問にはC++のタグが付いているので、とにかく' cv :: Point'オブジェクトを使う方が良いでしょう。質問をCに書き直すことは良い考えかもしれません。 –

答えて

4

まず、P1はP1型のオブジェクトへのポインタです。ポインタを使ってオブジェクトのメンバーに何かを割り当てるには、- >の演算子を使用する必要があります。このポインタが配列の先頭を指している場合は、演算子[]を使用して個々の要素にアクセスします。この演算子は、指定されたインデックスの参照を返します。この場合、CvPoint &です。

1つのオブジェクト

CvPoint* P1 = new CvPoint(); // default construction of an object of type CvPoint 
P1->x = 32; 

// do something with P1 

// clean up 
delete P1; 

2.動的割り振りまたはアレイ

CvPoint* points = new CvPoint[2]; // array of two CvPoints 
points[0].x = 32; // operator[] returns a reference to the CvPoint at the given index 
points[1].x = 32; 

// do something with points 

// clean up 
delete[] points; 

両方の例では、新しいオペレータが使用されているので、それはの動的割り当てをと一致する電話番号をペアにする必要があります。または削除[]の場合アレイの

2

なし動的メソッド:

CvPoint P1; 

P1.x=32; 

P1.y=32; 

////////////// 

CvPoint P2[2]; 

P2[0].x=32; 

P2[0].y=32; 
関連する問題