[問題] friend 的使用

看板C_and_CPP (C/C++)作者 (zzz)時間12年前 (2014/01/10 05:01), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VSC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL 不過應該不會有影響 問題(Question): class Animal { protect: int a; public: friend void swap(Animal &A,Animal &B); } void swap(Animal &A,Animal &B) { int i = A.a; A.a = B.a; B.a = i; } class people : public Animal { public: peoele(){a = 1;}; } class fish : public Animal { public: fish(){a = 2;}; } ----------------------main.cpp------------------------ #include <... Animal *g_A1,*g_A2[1]; void main() { g_A1 = new people; g_A2[0] = new fish; swap(*g_A1,*g_A2); } 餵入的資料(Input): 預期的正確結果(Expected Output): 兩者資料交換 錯誤結果(Wrong Output): 讀不到A.a 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 盡力把問題用程式碼打上來了, 問題有點難描述。 因為是直接在ptt上面輸入, 所以當作pseudo code來看, 不要理會一些小錯誤。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.127.36.33

01/10 08:49, , 1F
打錯b.a=i吧,main是物件的話怎有new?
01/10 08:49, 1F

01/10 11:59, , 2F
裡面錯誤一堆. 你確定原本沒打錯?
01/10 11:59, 2F

01/10 12:00, , 3F
我模仿你的用法寫: http://ideone.com/vgXoXy
01/10 12:00, 3F

01/10 12:01, , 4F
看不出有甚麼問題?. 應該是哪裡你打錯了?
01/10 12:01, 4F
有一堆錯誤真是抱歉, 如果我改成陣列宣告的話應該怎麼丟引數?(紅色地方) 因為有複數個物品所以宣告陣列個指標 ※ 編輯: yeh19921026 來自: 120.127.36.33 (01/10 15:27)

01/10 15:32, , 5F
你是要交換陣列裡面的其中兩個嗎?
01/10 15:32, 5F

01/11 03:01, , 6F
Feis:看起來是當交換對象之一是陣列元素時不知道怎麼樣
01/11 03:01, 6F

01/11 03:01, , 7F
Feis:傳給swap function
01/11 03:01, 7F

01/11 04:09, , 8F
陣列元素還是一樣 *gA[1] 沒什麼特別的?
01/11 04:09, 8F
文章代碼(AID): #1Ipmv24i (C_and_CPP)
文章代碼(AID): #1Ipmv24i (C_and_CPP)