看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) iostream 問題(Question): 我是一個自學C++還不久,觀念亂七八糟的人 最近在寫卡了很久的「自定資料型態」章節,寫到最後一題 這題要做一個 last - in, first - out 的堆疊,並把需要的東西都丟到一個class裡 我想要在class裡創一個陣列,把從鍵盤輸入的資料一個個丟進去 並再創一個靜態變數,代表陣列的位置,好讓程式知道要把輸入值丟到哪個位置 移出資料時則用偷懶的手法,只是把靜態變數減一而已 要看最頂端資料時把靜態變數所代表的位置的資料印出來 印出資料時則從靜態變數代表的位置開始,往前一個一個印出來 問題出在於class裡的陣列並沒有存入鍵盤輸入的值 印出來全部都是沒有初始化的亂碼,而我看不出來問題在哪裡0.0 另一個問題是我在main裡呼叫class的建構函式時,都是用很蠢的方法 不知道能不能有更好的方法...... 不過我自己也覺得對於class和array的觀念,我都還是破破爛爛的 也希望各位板友能從我打的code看出哪裡的觀念有重大缺失 在寫程式時的想法,都盡量敘述在程式碼和文章裡了 請大家不吝一看,感謝 m(_ _)m 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 靜態變數setting確實有隨著程式的控制而增減,但輸入值並沒有存到class裡的陣列 結果要從class裡的建構函式印出陣列內資料時,只能印出未初始化的亂數 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/bI70M2Vi 補充說明(Supplement): 等解決完這題,我就要暫時丟下現在看的這本,改看C++ Primer了......ˊˋ --
gcobc12632 :一樓帥哥11/04 22:52
maple0935 :二樓帥哥11/04 22:52
howar31 :二樓帥哥11/04 22:52
howar31 :..11/04 22:52
maple0935 :五樓吃屎 11/04 22:53
maple0935 :幹 可以不要當簽名檔嗎... 11/04 22:53
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.102.47
james732:http://codepad.org/WZkFUF6u 大概是這樣 02/19 17:31
james732:通常堆疊會叫做stack,heap是另一種東西...XD 02/19 17:31
囧a...... 那請問我原來的程式碼問題出在哪裡呢0.0?
tjjh89017:stack heap 中文很容易搞錯,我是用heap翻成"堆"的中譯 02/19 18:40
linotwo:1. 把 stack 命名為 heap,容易造成混淆 02/19 18:57
linotwo:2. 仰賴靜態變數,無法同時存在多個 instance 02/19 18:57
linotwo:3. 堆疊陣列跟 value 的生命週期不同,不該包在一起 02/19 18:58
(1)是我搞混了,(3)我瞭解了,但請問(2)是什麼意思0.0?
linotwo:假設我需要兩個 stack,我會希望他們有各自的 top pointer 02/19 20:44
linotwo:這種情況下就不該把 top pointer 宣告為 static 02/19 20:45
linotwo:因為 static 表示其為所有的 instance 共用 02/19 20:46
喔喔這個我懂,不過我想說這個程式用static應該沒差(吧?)
linotwo:我想你該留意的是為何一開始會想幫這個變數加上 static 02/19 23:19
因為書上說static變數可以用來計算呼叫建構函式的次數,想說跟我想的程式功能有像 沒多想就寫下去了 ._.
loveme00835:所以問題有解決嗎? 02/22 04:31
喔喔有了,感謝! ※ 編輯: o07608 來自: 218.173.173.183 (02/22 13:59)