POINT用指標回傳問題 |
答題得分者是:dllee
|
moonsea
一般會員 ![]() ![]() 發表:11 回覆:15 積分:5 註冊:2007-10-08 發送簡訊給我 |
我把一個搜尋POINT的程式寫成class,
但回傳時發生問題(數字很大,不是點的資訊), 不知道是否是型態會是宣告錯誤所致,謝謝 [code cpp] //---class POINT *Get4BoundP(TImage *Image3,int T) { //---0為搜尋白色點,1為搜尋黑色點 int ImgH; //---Image3的寬; int ImgW; //---Image3的長; //---找到4個點 POINT Pt[4]; } //---主程式 POINT *BPoint=new POINT[4]; BPoint=Get4BoundP(Image3,0); //---建一個新的POINT集 POINT *RPoint=new POINT[(BPoint[2].y-BPoint[0].y)-1]; [/code] |
dllee
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
您的程式有很大的問題。
問題1 以下並不是一個 Class [code cpp] POINT *Get4BoundP(TImage *Image3,int T) { //---0為搜尋白色點,1為搜尋黑色點 int ImgH; //---Image3的寬; int ImgW; //---Image3的長; //---找到4個點 POINT Pt[4]; } [/code] 這只能算是一個副函式,這樣的函式 Compile 應該會有警告訊息,提示您沒有回傳值!! 問題2 [code cpp] POINT *BPoint=new POINT[4]; BPoint=Get4BoundP(Image3,0); [/code] 第一行已指定 BPoint 已經是 new 出來的 POINT[4] 第二行又把 BPoint 指標指到別的地方,這樣去讀取 BPoint 很容易發生 Exception 同時,第一行所 new 出來的 POINT[4] 的記憶體空間,就沒正常釋放了。(Memory Leakage) 而您所謂的值很大,因是為第二行根本就已亂指指標,值很大很亂是正常的。 改成如下的介面: [code cpp] void Get4BoundP(TImage *Image3,int T, POINT *Pt) { //---0為搜尋白色點,1為搜尋黑色點 int ImgH; //---Image3的寬; int ImgW; //---Image3的長; //---找到4個點 // POINT Pt[4]; ← 不必再宣告, 用輸入的參數即可 // ... 作你要的運算, 搜尋點... 以下是隨便給值測試 Pt[0].X=0; Pt[0].Y=0; Pt[1].X=100; Pt[1].Y=100; Pt[2].X=200; Pt[2].Y=200; Pt[3].X=300; Pt[3].Y=300; } //---主程式 POINT *BPoint=new POINT[4]; Get4BoundP(Image3,0,BPoint); //---把 BPoint 的內容檢查看看是否正確 [/code] 這樣,應該會比較 OK。
------
http://www.ViewMove.com
編輯記錄
dllee 重新編輯於 2009-06-18 18:01:15, 註解 無‧
|
moonsea
一般會員 ![]() ![]() 發表:11 回覆:15 積分:5 註冊:2007-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |