看板 C_and_CPP 關於我們 聯絡資訊
這問題是在他版論壇裡,獲得原提問允許,轉至本版, 想請教各位先進、版大,對於此問題看法如何 (應有得討論), 不是很會敘述, 請看程式碼 --------- #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
firejox:typedef Object* const pObj[6][6];? 07/28 19:06
tropical72:f 大的也試了,強制轉型也失敗了 XD 07/28 19:09
tropical72:補上 http://codepad.org/izBgYrAc, 補上一樓:謝謝. 07/28 19:11
angleevil:看了編譯器給的意見.'Object* const [6][6]' 07/28 21:48
angleevil:好像是const pointer to Object[6][6],因此會出錯 07/28 21:50
angleevil:自己也不確定此說法可以嘛? 可能要其他人幫忙一下 07/28 21:55
akasan:看到這問題想到tinlans 之前的好文 #1B_2w2Uj 07/29 02:57
tropical72:真的是好文!!謝謝 akasan !! 07/29 03:27
Favonia:原來 FAQ 有... 早知道不要打這麼多字 xDDD 07/29 03:37
Favonia:上次翻 c-faq 也發現到很多好東西 :P 07/29 03:55