שאלת ++C
נניח שיש לי template כזה:
נניח שיש לי template כזה:
template <char *str> class C { public: C() : name(str) {}; char *getName() { return name; } private: char *name; };
ואת הקוד הבא:char str[] = "str"; int main() { C<str> c1; C<"str"> c2; }
מתוך שתי השורות ב-main, הראשונה מתקמפלת והשנייה לא. השגיאה שמתקבלת מהקומפיילר (GCC 3.3):error: string literal "str" is not a valid template argument because it is the address of an object with static linkage
אני לא כ"כ מבין את השגיאה הזו, כי עד כמה שאני יודע, בזמן קומפילציה הכתובת של המחרוזת השנייה אמורה להיות מוכרת לקומפיילר. אם מישהו יוכל לעשות קצת סדר בבלאגן אני אשמח.