[問題] template在OOP用瘋狂過不了 請求支援...

看板C_and_CPP (C/C++)作者 (太陽底下無新鮮事)時間12年前 (2013/11/09 05:47), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/1
各位大大好 小弟C++剛開始要進入物件導向的部分 這幾天跑一個基本 template 功能可是不管我怎麼試就是瘋狂無法run \_/ 已經極度腦弱上網爬文爬了好久都沒找到盲點... 想請求大大支援幫我看一下 是哪裡出了問題 雖然我知道我的問題一定很蠢 可是沒解決真的就很會一直覺得 有事情沒解決感覺超不踏實的... 以下是我的 code 跟顯示的錯誤訊息 我只是想要讓 class HOUSE 裡面 private 的部分變成變數 可以讓我在 main 裡面 任意決定數列x的資料數 然後試驗跑看看而已 >< code: #include <cstdlib> #include <iostream> using namespace std; template <int n> class HOUSE { private: int x[n]; public: void Read() { for(int i=0; i<n; ++i) cout<<"Enter a number: "; cin>>x[i]; } void show() { for(int i=0; i<n; ++i) { cout<<x[i]<<"\t"; } cout<<endl; } }; int main(int argc, char *argv[]) { HOUSE <10> t; t.Read(); t.show(); system("pause"); return 0; } 結果他一直在第15行 cin>>x[i];這邊反白 然後錯誤訊息如下: In member function 'void HOUSE<n>::Read()': [Error] name lookup of 'i' changed for ISO 'for' scoping [-fpermissive] (if you use '-fpermissive' G++ will accept your code) 真的已經想破頭了 有請教了朋友也都沒辦法找出錯誤解決 請求神大支援! 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 75.84.39.104 ※ 編輯: lalawolala 來自: 75.84.39.104 (11/09 05:52)

11/09 05:55, , 1F
你忘記在附近的一個 for 上括大括號了...
11/09 05:55, 1F

11/09 05:55, , 2F
這告訴我們習慣先把大括號打出來是有好處的
11/09 05:55, 2F

11/09 06:18, , 3F
拜謝 LPH66大! 這個時間竟然有神人解救 我淚流滿面
11/09 06:18, 3F

11/09 06:19, , 4F
果然跟我預測的一樣一定會是很腦殘的原因 ... 但沒想到
11/09 06:19, 4F

11/09 06:19, , 5F
我還追加了眼殘功能 /_\
11/09 06:19, 5F

11/09 09:55, , 6F
用一些會自動幫你標大括號的編輯器吧。
11/09 09:55, 6F

11/09 19:14, , 7F
我不認為在縮排等 coding style 還弄不清楚的狀況下,
11/09 19:14, 7F

11/09 19:14, , 8F
光靠編輯器幫你縮排、加大括號然後說"我有縮排啊!"是好主意
11/09 19:14, 8F

11/09 19:18, , 9F
再說這次是左右括號一起忘記加,任何編輯器都救不了你
11/09 19:18, 9F

11/09 23:57, , 10F
就算只是自動縮排,一排下去那個錯誤也無所遁形了呀
11/09 23:57, 10F

11/10 05:21, , 11F
感謝各位大大 我一定會努力把縮排學好跟建立把誇號先打
11/10 05:21, 11F

11/10 05:22, , 12F
好的習慣的!左右都忘記加我實在太悲劇了 ~_~
11/10 05:22, 12F
文章代碼(AID): #1IVLlhD1 (C_and_CPP)
文章代碼(AID): #1IVLlhD1 (C_and_CPP)