看板 C_and_CPP 關於我們 聯絡資訊
小弟在寫一個用OOP實作多項式 的程式 可是就一個小地方 debug一個早上還是找不出原因 把所有變數值都印出來,還是不知道為什麼 第一次在main裡面執行 a.newTerm(2,4); 是成功的 但下一行再執行 a.newTerm(3,5); 就在termArray[terms].coef=theCoeff; 卡住了,也沒說錯誤,但從這以後 的指令都不跑了,太奇怪了! 另外一件很怪的事 如果我把termArray[terms].coef=theCoeff; 的上一行,也就是: cout<<"termArray["<<terms<<"].coef="<<termArray[terms].coef<<endl; 註解掉(這只是一個印出目前值,刪掉應該無傷大雅),執行時就好像會runtime_error ps.compiler是Dev C++ 這到底是什麼問題啊@@ #include <iostream> using namespace std; class Term{ public: friend class Poly; double coef; int exp; }; class Poly{ public: Term* termArray; int capacity; int terms; void newTerm(double theCoeff,int theExp) { cout<<"Enter function newTerm theCoeff:"<<theCoeff<<" theExp:"<<theExp<<endl; if(terms<=capacity-1) { cout<<"Enter if statement."<<endl; capacity*=2; cout<<"Now capacity:"<<capacity<<endl; Term* temp=new Term[capacity]; copy(termArray,termArray+terms,temp); termArray=temp; delete[] temp; } cout<<"termArray["<<terms<<"].coef="<<termArray[terms].coef<<endl; termArray[terms].coef=theCoeff; cout<<"termArray["<<terms<<"].coef="<<termArray[terms].coef<<endl; termArray[terms++].exp=theExp; cout<<"---Information list---"<<endl; cout<<"term:"<<terms<<endl; cout<<" capacity:"<<capacity<<endl; cout<<" ["<<terms-1<<"]"<<": " <<endl; cout<<"coef:"<<termArray[terms-1].coef<<endl; cout<<"exp:"<<termArray[terms-1].exp<<endl<<endl; } Poly():terms(0),capacity(1){} }; int main() { Poly a,b; a.newTerm(2,4); a.newTerm(3,5); a.newTerm(4,6); a.newTerm(5,7); system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.15.86
janice001:上色的挺好看的.. 10/17 12:50
bil193:是用置底文:[公告] 張貼程式碼 裡面的網址的啦 10/17 12:54
ledia:是不是應該 terms == capacity 才加倍呀 ? 10/17 12:56
ledia:or 至少是 terms >= capacity - 1 之類的 10/17 12:57
bil193:改成terms>=capacity-1 之後 還是一樣卡在原來的地方耶@@ 10/17 13:01
bil193:多謝提醒:) 10/17 13:02
janice001:噗 原來如此 XD 10/17 13:20
snowlike:new空間給temp,然後交給termArray,然後把該空間回收.. 10/17 13:24
tiyun:應該是delete[] termArray; 再termArray=temp; ? 10/17 14:26
bil193:謝謝各位 用樓上的方式就可以了 10/17 17:30