פורסם 2007 בספטמבר 1318 שנים אחרי C# וJAVA איך אפשר לחזור לגועל נפש הזה בקיצור יש לי מערך תלת מימדי ואני ליצור מצביע אליו משהו בסיגנון: void InitBlocks(){ GLbyte piece1[N][N][N]={{0,1,0, 0,1,0, 0,1,0}, {0,1,0, 0,0,0, 0,0,0}, {0,0,0, 0,0,0, 0,0,0}};GLbyte p[N][N][N]; %8%8 p[0]=&piece1[0]; //BlocksArray[0].Cubes=piece1; } השורה שמסומנת ב%8%8 לא עובדת ... מה עושים ?
פורסם 2007 בספטמבר 1318 שנים מה הכוונה לא עובדת? מה השגיאה שאתה מקבל, ומה רשום בשורה שקיבלת עבורה את השגיאה?
פורסם 2007 בספטמבר 1418 שנים מחבר זה השגיאה:C:\Documents and Settings\Haim Levy\Desktop\Tetris3D\main.cpp(768) : error C2109: subscript requires array or pointer typeC:\Documents and Settings\Haim Levy\Desktop\Tetris3D\main.cpp(768) : error C2109: subscript requires array or pointer typeC:\Documents and Settings\Haim Levy\Desktop\Tetris3D\main.cpp(768) : error C2106: '=' : left operand must be l-valueוזה מה שכתבתי:p[0][0][0]=2;
פורסם 2007 בספטמבר 1418 שנים אתה הגדרת את המערך לא נכון מההתחלה זה מה שעשית מערך של מערכים עם 9 תאים GLbyte piece1[N][N][N]={ {0,1,0, 0,1,0,0,1,0} ,{0,1,0,0,0,0,0,0,0} ,{0,0,0,0,0,0,0,0,0} };וככה זה צריך להיות: GLbyte piece1[N][N][N]={ { {0,1,0} ,{0,1,0} ,{0,1,0} } ,{ {0,1,0} ,{0,0,0} ,{0,0,0} } ,{ {0,0,0} ,{0,0,0} ,{0,0,0} } };
פורסם 2007 בספטמבר 1418 שנים מערך כזה:char P[N][N][N];הוא מערך סטטי בגודל קבוע, ולא מצביע.חשוב לשים לב שלמרות ש-C נוטה לאפשר לך לפעמים להחליף ביניהם, מערכים ומצביעים הם לא בדיוק אותו דבר.אתה יכול "להמיר" מערך למצביע, אבל מה שאתה מנסה (או חושב שאתה מנסה) זה להפוך מצביע למערך.דבר ראשון, תשתמש ב-typedef-ים.דבר שני, P צריך להיות מצביע למערך.typedef GLbyte GLBArray3D[N][N][N];GLBArray3D piece1 = { /*... */ };void f(){ GLBArray3D *p; p = &piece1; }וכמובן, תתקן את האתחול של piece1 כמו שאמרו כאן.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.