Re: [問題] C++改寫成C

看板C_and_CPP (C/C++)作者 (好人超)時間16年前 (2010/01/10 22:13), 編輯推噓5(504)
留言9則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《gary6296 (跳跳佑)》之銘言: : +++++++++++++++++++++++++++++++++++++++++++ : 以下是原始碼的部份 : class CRecord{ : public: : double mdPt[2]; : public: : CRecord() {}; : virtual ~CRecord() {}; : double distance(CRecord *to); : }; : +++++++++++++++++++++++++++++++++++++++++++++ : 以下是我自己改寫的部份 : struct CRecord : { : double mdPt[2]; : CRecord() {}; : virtual ~CRecord() {}; : double distance(CRecord *to); : }; : +++++++++++++++++++++++++++++++++++++++++++++ 在 C 語言裡,struct 裡面不能有 member function 也就是說上面三行紅色的都是不合法的 可能要改成這個樣子 void CRecord_constructor(struct CRecord *record); void CRecord_destructor(struct CRecord *record); double CRecord_distance(struct CRecord *from, struct CRecord *to); 在 C++ 裡面,可以省略掉 class 或 struct 關鍵字(上例綠色的部份) 但 C 語言是不能省掉的,一定要寫出來 當然,你的函式改成這樣子,呼叫這些函式的地方也必須做對應的修改 譬如 d = record1.distance(&record2); 可能要改成 d = CRecord_distance(&record1, &record2); 把 C++ 全面改寫成 C 是一件不小的工程...只能說加油了 希望你的程式裡沒有牽扯到太多的繼承與多型.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46 ※ 編輯: james732 來自: 140.117.171.46 (01/10 22:15)

01/10 22:22, , 1F
C++的struct可以視為public class~
01/10 22:22, 1F

01/10 22:52, , 2F
謝謝 我研究一下 不懂再問XD
01/10 22:52, 2F

01/10 23:02, , 3F
那這樣子的話我是不是就要宣告 CRecord_distance這些東西
01/10 23:02, 3F

01/10 23:05, , 4F
用原本的 CRecord 那個 distance 去改寫
01/10 23:05, 4F

01/10 23:15, , 5F
我不太懂...我剛試了一下他要我宣告的樣子
01/10 23:15, 5F

01/10 23:16, , 6F
field `CRecord_constructor' declared as a function
01/10 23:16, 6F

01/10 23:17, , 7F
你要先知道 C++ 的 member function 與 function 關係
01/10 23:17, 7F

01/11 00:53, , 8F
有繼承 多型的話 就要參考gtk的data link作法了
01/11 00:53, 8F

01/11 13:01, , 9F
strcut關鍵字可以利用typedef去掉
01/11 13:01, 9F
文章代碼(AID): #1BIU1li7 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BIU1li7 (C_and_CPP)