線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1375
推到 Plurk!
推到 Facebook!

請教物件宣告、初始化問題

尚未結案
cmusic
一般會員


發表:8
回覆:1
積分:1
註冊:2005-10-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-18 19:26:13 IP:140.125.xxx.xxx 訂閱
各位前輩好
小弟目前使用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
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-19 01:19:53 IP:59.115.xxx.xxx 訂閱
關鍵點在於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
系統時間:2017-12-17 23:50:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!