請教物件宣告、初始化問題 |
尚未結案
|
cmusic
一般會員 發表:8 回覆:1 積分:1 註冊:2005-10-01 發送簡訊給我 |
各位前輩好
小弟目前使用OpenCV與VC 在寫一支物件偵測的程式 遇到了物件使用上的問題 部份程式碼如下 CvAvgComp r; CvAvgComp r1 = *((CvAvgComp*) cvGetSeqElem( objects1, i )); CvAvgComp r2 = *((CvAvgComp*) cvGetSeqElem( objects2, i )); r = *(CvAvgComp*)cvAlloc( detcount * sizeof( *r )); r.rect.x = ( r1.rect.x r2.rect.x ) / 2; r.rect.y = ( r1.rect.y r2.rect.y ) / 2; r.rect.width = ( r1.rect.width r2.rect.height ) / 2; r.rect.height = ( r1.rect.height r2.rect.height ) / 2; r.neighbors = MAX( r1.neighbors, r.neighbors ); 編譯失敗 是失敗原因是r = *(CvAvgComp*)cvAlloc( detcount * sizeof( *r ));為不合法的間接取直 如果少掉該行的話,如下 CvAvgComp r; CvAvgComp r1 = *((CvAvgComp*) cvGetSeqElem( objects1, i )); CvAvgComp r2 = *((CvAvgComp*) cvGetSeqElem( objects2, i )); r.rect.x = ( r1.rect.x r2.rect.x ) / 2; r.rect.y = ( r1.rect.y r2.rect.y ) / 2; r.rect.width = ( r1.rect.width r2.rect.height ) / 2; r.rect.height = ( r1.rect.height r2.rect.height ) / 2; r.neighbors = MAX( r1.neighbors, r.neighbors ); 編譯可以成功 但是在執行到r.rect.x = ( r1.rect.x r2.rect.x ) / 2;時候就會出現錯誤並且中止 訊息如下 The variable r is being used without being defined. 請問該如何解決呢? 以及這兩個狀況發生如此現象的原因為何?? 拜托各位了! |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
關鍵點在於CvAvgComp這個類別的定義,可是你沒列出來,很難判別! 請貼出來ok?
此外,看你下面的程式 [code cpp] CvAvgComp r; CvAvgComp r1 = *((CvAvgComp*) cvGetSeqElem( objects1, i )); CvAvgComp r2 = *((CvAvgComp*) cvGetSeqElem( objects2, i )); r = *(CvAvgComp*)cvAlloc( detcount * sizeof( *r )); [/code] 第1行是用預設建構子初始物件,2與3行是用copy建構子初始,第4行又用了 = 複載法方 來copy物件。 你CvAvgComp類別裡有定義這三種方法嗎? 第四行的使用非常的奇怪,cvAlloc是配記憶體嗎? 看起來像是。怎會把一個新的空間直接copy至物件? 你在用最低階的方式處理物件嗎? r = *((CvAvgComp*)cvAlloc( detcount * sizeof( *r ))); //應該要紅色的括號吧? 優先順序不是很確定 等你把CvAvgComp類別還有cvGetSeqElem類別的定義po上來再深入研究吧~!
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |