CArray

ברנדל

New member
CArray

איכזב אותי לחלוטין ניסיתי להחזיר אותו בתור ערך בפונקציה וגיליתי שזה בתלתי אפשרי כי אין לו copy constructor וסתם מתוך סקרנות, אלה מביניכם שנוהגים לעבוד עם mfc (שנוצר עם ה wizard) מעדיפים מבני נתונים של mfc כמו CArray CString CMap , או אלה של stl? נימוקים יתקבלו בשמחה!
 

אלדד28

New member
MFC טובה רק לשני דברים,

ואלו ה-DOCVIEW MODEL שלה, וה-WRAPPER-ים ל-GUI. אלו עשויים פחות או יותר בסדר. כל השאר, דהיינו - THREADS, SOCKETS, ו - DATA STRUCTURES - לא לגעת עם מקל עם שוקר בקצה. יש לך את STL בשביל זה, ואם אתה רוצה תקשורת/THREADS יש את ACE ויש אחרות. גם ל-GUI, אגב, יש הרבה תחליפים אחרים, אבל MFC זה נוח כי זה אינטגרבילי עם VS.
 

ברנדל

New member
אלדד

עם כל ההערכה אליך אני לא תמיד יודע אם הדברים מבוססים. לדוגמא רשמת בעבר שב CString יש דליפות זיכרון, אתה יכול להוכיח. נראה לי תמוה שאם יש זה לא תוקן ע"י מיקרוסופט, זה הרי סך הכל מחלקה לא מורכבת מידי. לא שאני פוסל או מתנגד לדבריך, פשוט לא חקרתי את המחלקה כך שאין לי מושג. על מה טענותיך מתבססים. לגבי CSocket אני מסכים איתך אותו דבר לגבי מחלקות ה database המגוכחות שלהם, אבל זה מהסיבה העיקרית שהם לא גמישות מספיק לכל הצרכים. אבל לדוגמא בקשר ל thread: הרי כל מה שאני מצפה ממנו זה לפתוח לי פונקציה של thread. אתה חייב להסכים איתי שלפחות פשטות השימוש ב afxbeginthread והסנכרון ביניהם לדוגמא באמצעות CCriticalSection שעובד אצלי מצוין ואין לי יותר מידי צרכים מ thread (שלא כמו socket בו אני מחפש גמישות), הפשטות עולה בהרבה על המורכבות (לא שהיא כזו גדולה) בשימוש דרך api. פשוט תנסה לעשות פתיחת thread וסינכרון פשוט בשתי השיטות ותראה שעם mfc זה פחות פקודות. אז למה לא. בקשר ל CString אני אשמח לשמוע הוכחות
 

אלדד28

New member
אז ככה,

CSocket גמישה מאוד - לכיוון מסוים מאוד ולשום כיוון אחר - ומעבר לכך היא לא פורטבילית. יש עשרות יישומים טובים יותר למחלקה הזו. לגבי THREADS, אף פעם לא הבנתי למה צריך את כל הסיבוך של MS בשביל לפתוח THREAD. חוץ מזה, בחייאת - לעשות beginthreadex זה יותר מסובך מלכתוב מחלקה שלמה לפי הדרישות של MS? ודבר אחרון - שוב - הם לא פורטביליים. לגבי CString, אני מדבר מתוך נסיון עבר. איזושהי אפליקציה פשוטה שהשתמשה אצלי ב-CString דלפה זיכרון כל הזמן, עד שהעפתי את ה-CString ממנה. לומר לך שעצרתי ובדקתי לעומק העניין למה זה דולף? לא. לא עשיתי את זה, כי אני לא TESTER של MICROSOFT. עברתי ל-std::string וזה עבד נהדר. למה לשבור את הראש?
 
למעלה