Интересует, сколько будет создано объектов CPen: один, по числу инстанцированных MyClass<T>, по числу инстанцированных MyClass<T> с учётом схлопывания оптимизатором одинаковых реализаций метода Draw?
А>Интересует, сколько будет создано объектов CPen: один, по числу инстанцированных MyClass<T>, по числу инстанцированных MyClass<T> с учётом схлопывания оптимизатором одинаковых реализаций метода Draw?
По числу специализаций класса MyClass<T>, при условии что у экземпляр класса была вызвана функция-член Draw.
А>Интересует, сколько будет создано объектов CPen: один, по числу инстанцированных MyClass<T>, по числу инстанцированных MyClass<T> с учётом схлопывания оптимизатором одинаковых реализаций метода Draw?
Второе.
Любите книгу — источник знаний (с) М.Горький
Re[2]: Статические константы в методе шаблона
От:
Аноним
Дата:
08.12.05 11:31
Оценка:
Здравствуйте, Bell,
А если так сделать, будет ли создан только один CPen?
Скажите, я чего-то наверно не понимаю, но почему такой код не работает?
int test()
{
return 5;
}
struct A
{
static const int b = test();
}
A a;
int c = a.b;
MSVC7.3 — c равно 0 (в дебаге). имхо там можно указывать только константное выражание. а вызов функции таковым не является. Я не прав? Как заставить тогда работать.
А>MSVC7.3 — c равно 0 (в дебаге). имхо там можно указывать только константное выражание. а вызов функции таковым не является. Я не прав? Как заставить тогда работать.
А никак. Инициализатором для статической константы — члена класса может быть только константное интегральное выражение, которым вызов test() не является — т.е. такой код даже компилироваться не должен.
Of course, the code must be complete enough to compile and link.
Здравствуйте, Аноним, Вы писали:
А>Скажите, я чего-то наверно не понимаю, но почему такой код не работает?
А>
А>int test()
А>{
А> return 5;
А>}
А>struct A
А>{
А> static const int b = test();
А>}
А>A a;
А>int c = a.b;
А>
А>MSVC7.3 — c равно 0 (в дебаге). имхо там можно указывать только константное выражание. а вызов функции таковым не является. Я не прав? Как заставить тогда работать.
"ComeauTest.c", line 8: error: expression must have a constant value
static const int b = test();
Re[7]: Статические константы в методе шаблона
От:
Аноним
Дата:
09.12.05 07:59
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:
А>>MSVC7.3 — c равно 0 (в дебаге). имхо там можно указывать только константное выражание. а вызов функции таковым не является. Я не прав? Как заставить тогда работать.
L_L>А никак. Инициализатором для статической константы — члена класса может быть только константное интегральное выражение, которым вызов test() не является — т.е. такой код даже компилироваться не должен.
Именно, я так и думал! Но меня ввело в ступор то, что MSVC даже warning'a (level4!) не выдал...
Спасибо