אתחול מערכים, ++C.

The Albatross

New member
אתחול מערכים, ++C.

שלום לכולם, יש לי מערך דו מימדי של SolidBrush, בגודל של 5X5. הc'tor של המחלקה הזאת מקבל אך ורק Color, ולא קיים קונסטרקטור שלא מקבל פרמטרים בכלל, ככה שאני לא יכול להצהיר על המערך ככה:
SolidBrush brushes[5][5];​
הדרך היחידה שעולה על דעתי היא כזאת:
SolidBrush brushes[5][5] = {/*וכאן 25 פעמים*/NULL};​
אני די בטוח שאני מחמיץ משהו יותר פשוט. יש איזשהו פתרון הגיוני?
 

gmorphus

New member
גם לא יעבוד

לא יודע מה זה בדיוק SolidBrush אבל נראה שהוא לא מצביע, אז הוא לא יכול לקבל NULL. הדרך הכי טובה לעשות את זה היא פשוט להקצות את המערך דינאמית. אני לא רואה ברירה אחרת...
 

The Albatross

New member
../images/Emo26.gif

NULL דווקא עובד משום מה. בכל מקרה, הקצאה דינמית נראית לי קצת כמו Overhead רציני על שטות כזאת. תודה בכל מקרה.
 
אז מה הבעיה ליצור default ctor ?

זה מצב שבו נדרש ctor דיפולטי. אם אתה רוצה בכ"ז לשנות את ההתנהגות של הctor הדיפולטי, תוכל לאתחל משתנה סטטי. למשל:
// This is a static function that sets a static variable // SolidBrush::set_default_color(BLUE); SolidBrush brushes1[5][5]; SolidBrush::set_default_color(RED); SolidBrush brushes2[5][5];​
אם המחלקה "לא בשליטתך" אתה בבעיה. אבל תוכל למצוא פיתרון בירושה למשל:
class MyBrush : public SolidBrush { public: MyBrush() : SolidBrush(DEFAULT_COLOR) {} }; // MyBrush IS-A SolidBrush // MyBrush brushes[5][5];​
אם הפיתרון בלתי קביל תוכל להשתמש בפונקצית איתחול למערך דינמי
 

The Albatross

New member
הקוד תוכנת ע"י מיקרוסופט.

אמורה להיות לי גישה אליו?
ירושה נראית נחמד. אני אבדוק את זה, תודה.
 
למעלה