[問題] const 二維指標陣列參數傳遞問題

看板C_and_CPP (C/C++)作者 (藍影)時間14年前 (2011/07/28 19:00), 編輯推噓0(0010)
留言10則, 5人參與, 最新討論串1/2 (看更多)
這問題是在他版論壇裡,獲得原提問允許,轉至本版, 想請教各位先進、版大,對於此問題看法如何 (應有得討論), 不是很會敘述, 請看程式碼 --------- #include <string.h> class Object{ public: int value; }; void f1( const Object * const obj[6] ){} void f2( const Object * const obj[6][6]){} int main() { Object *obj1[6]; f1( obj1 ); /* L1 */ // Visual C++ - error C2664: // 無法將參數 1 從 'Object *[6][6]' 轉換成 'const Object *const [][6] Object *obj2[6][6]; f2(obj2); /* L2 - I know it's error...*/ typedef const Object* pObj[6][6]; f2((pObj)obj2); /* L3 */ const Object *tmp[6][6]; memcpy(tmp, obj2, sizeof(Object)*36); f2(tmp); return 0; } ------- L1 的部份是錯誤訊息, 我模糊了為何不能過, 改成 const Object *obj2[6][6] 確實可以, 但以為 non-const 可以丟給 const做傳遞動作。 L2 部份是我的 trying, 我其實是想再 typedef pObj 成 const obj* [6][6], 再強制轉型, 這部份不知該如何下手 L3 這是原提問者用的想法、概念 (code依概念寫的) 想請問這問題,在不動 f2 情況下,obj2 該怎麼丟到 f2 執行? 謝謝各位不吝指教, 感激不盡! -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.78.41

07/28 19:06, , 1F
typedef Object* const pObj[6][6];?
07/28 19:06, 1F

07/28 19:09, , 2F
f 大的也試了,強制轉型也失敗了 XD
07/28 19:09, 2F

07/28 19:11, , 3F
補上 http://codepad.org/izBgYrAc, 補上一樓:謝謝.
07/28 19:11, 3F

07/28 21:48, , 4F
看了編譯器給的意見.'Object* const [6][6]'
07/28 21:48, 4F

07/28 21:50, , 5F
好像是const pointer to Object[6][6],因此會出錯
07/28 21:50, 5F

07/28 21:55, , 6F
自己也不確定此說法可以嘛? 可能要其他人幫忙一下
07/28 21:55, 6F

07/29 02:57, , 7F
看到這問題想到tinlans 之前的好文 #1B_2w2Uj
07/29 02:57, 7F

07/29 03:27, , 8F
真的是好文!!謝謝 akasan !!
07/29 03:27, 8F

07/29 03:37, , 9F
原來 FAQ 有... 早知道不要打這麼多字 xDDD
07/29 03:37, 9F

07/29 03:55, , 10F
上次翻 c-faq 也發現到很多好東西 :P
07/29 03:55, 10F
文章代碼(AID): #1ECK4tb5 (C_and_CPP)
文章代碼(AID): #1ECK4tb5 (C_and_CPP)