[問題] C++ head and cpp file connection

看板C_and_CPP作者 (淩文)時間10年前 (2014/02/15 14:05), 編輯推噓1(1021)
留言22則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) #include <iostream> 問題(Question): .h 跟 .cpp 跟 main.cpp 連結 and redefine 餵入的資料(Input): 預期的正確結果(Expected Output): 在nxn矩陣中的指定位置輸入指定值 錯誤結果(Wrong Output): 每個function都是同樣的結果 C:\Documents and Settings\r\桌面\Square_Matrix\Square_Matrix.cpp `Square_Matrix::Square_Matrix()' previously defined here 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/EAI9G7hb 補充說明(Supplement): 只知道是define了2次卻不知道 是哪裡define了2次 麻煩前輩抽空幫我看一下是哪裡要改!感激不盡! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 108.27.58.30

02/15 14:15, , 1F
.h為什麼要include .cpp?
02/15 14:15, 1F

02/15 16:01, , 2F
我也覺得不用 可是講師說比較不會miss掉"?"
02/15 16:01, 2F

02/15 16:07, , 3F
"比較不會miss掉"..不是你聽錯,就是講師口誤
02/15 16:07, 3F

02/15 16:07, , 4F
正式的專案裡我還沒看過有人 include .cpp/.c 的
02/15 16:07, 4F

02/15 16:13, , 5F
講師經常性學生有問題無法回答 google是我另一個講師
02/15 16:13, 5F

02/15 16:24, , 6F
但是我可以跟他學的地方還是很多
02/15 16:24, 6F

02/15 16:25, , 7F
像new *int[] 這個用法我就完全不知道它是怎麼指的
02/15 16:25, 7F

02/15 17:08, , 8F
new *int[] 連parse不會過吧
02/15 17:08, 8F

02/15 19:17, , 9F
他想講的應該是 new int * [ncount] ;
02/15 19:17, 9F
※ 編輯: lmdf2721 來自: 108.27.58.30 (02/16 01:07)

02/16 01:08, , 10F
抱歉 打錯*的位置
02/16 01:08, 10F

02/16 03:50, , 11F
把你的code下載下來自己compile
02/16 03:50, 11F

02/16 03:51, , 12F
command line: 「g++ Square_Matrix.cpp main.cpp」
02/16 03:51, 12F

02/16 03:51, , 13F
沒出現你說的錯誤結果(previously defined)
02/16 03:51, 13F

02/16 03:52, , 14F
但出現 forbids initialization of member 'new_size'
02/16 03:52, 14F

02/16 03:53, , 15F
所以把.h的new_size,new_value等四個初始化為0的動作
02/16 03:53, 15F

02/16 03:53, , 16F
都拿掉 只剩下宣告 這樣就可以compile成功了
02/16 03:53, 16F

02/16 03:54, , 17F
但是執行還是有問題 我想你可能有地方沒搞懂: 在main()
02/16 03:54, 17F

02/16 03:55, , 18F
的Square_Matrix a;那一行 就會呼叫到Square_Matrix()
02/16 03:55, 18F

02/16 03:55, , 19F
也就是*matrix = new int [new_size];這行
02/16 03:55, 19F

02/16 03:56, , 20F
所以你後來再Set_Size都是沒用的 所以你的程式應該要改~
02/16 03:56, 20F
感謝花時間幫我看code 我還在努力把指定值放到n*n array中 new int*[new_size] 加上for loop後 變成array[n][n] 然後 繼續跟指定值奮戰ing.... ※ 編輯: lmdf2721 來自: 108.27.58.30 (02/16 11:00)

02/21 10:10, , 21F
會不會是因為private變數在.h寫了'=0',所以編譯main.cpp
02/21 10:10, 21F

02/21 10:10, , 22F
時,編譯器幫你加了Default Constructor
02/21 10:10, 22F
文章代碼(AID): #1I_mEFn- (C_and_CPP)