| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Статические атрибуты в шаблоне |
| Автор: gray_k 21.5.2004, 13:38 | ||||
Я пытаюсь создать шаблон класса со статическим элементом:
Затем в другом модуле я пишу:
Никто не сталкивался с подобным? |
| Автор: bel_nikita 21.5.2004, 13:50 | ||
А так не пробывал:
|
| Автор: gray_k 21.5.2004, 14:04 |
| Пробовал, пробовал. Тут дело в том, что статические элементы в С++ не наследуются. У меня здесь вопрос как бы реализовать код так, чтобы можно было для разных классов использовать некоторые одинаковые методы работы со статическими элементами. |
| Автор: bel_nikita 21.5.2004, 14:21 |
| То gray_k: так может применить виртуальное наследование. Если хочешь, чтоб базовый класс (объект) был для всех один |
| Автор: bel_nikita 21.5.2004, 14:32 | ||||
Че та я не понял???
Все компилится! |
| Автор: gray_k 21.5.2004, 14:37 | ||||||||
| Нет немного не то. У меня есть несколько классов. У них элементы и функции - статические. Причем элементы различаются только типом, а так их набор одинаков. И для всех классов есть несколько типовых статических функция, которые меняют эти переменные. Естественно возникла идея, реализовать это в шаблоне. Собственно я сделал уже. Вот реализация: шаблон:
дочерние классы:
обращение к элементам:
Добавлено @ 14:40
А у меня такой код не скомпилился У тебя компилятор какой? У меня Builder C++6. |
| Автор: bel_nikita 21.5.2004, 14:52 | ||||
| Че-та я не понял. В чем проблема? Не понимаю зачем делать шаблон, если все переменныые int Вот код, все работает:
Добавлено @ 14:53 Компилер: MSVC6 |
| Автор: gray_k 21.5.2004, 15:00 | ||
Это просто тестовый пример. Настоящая реализация другая. |
| Автор: bel_nikita 21.5.2004, 15:12 |
| gray_k А работает? У меня все ОК |
| Автор: gray_k 21.5.2004, 15:24 |
| Код во втором ответе работает А то что я написал в вопросе не компилится, и про который ты сказал, что у тебя скомпилился. Ни на Борладе, ни на VC.NET. |
| Автор: Sined 21.5.2004, 16:14 | ||||
gray_k, вот что у меня чработало в 6 билдере. Может быть... ошибка где-то рядом.
Работает даже так.
Ну я и идиот!!!! Слава Богу, пока репутации нет, а то сейчас получил бы по шапке. Пример, рабочий, однако в его интерпретации я сильно ошибся. Правильно, видимо,так 1) При наследовании от шаблонного класса ты создаешь по сути дела 2 класса свой+шаблонный. За этим шаблонным(например, Proba<int>)ты закрепляешь 1 статический тип данных, потом все классы типа Proba<int> будут этим членом данных пользоваться. 2) Теперь представь, что у тебя есть 2 класса наследующих от Proba<int> и в одном ты стат.член изменил, а вдругом он по идее изменится не может, НО по сути дела у тебя есть 4 класса 2 наследника(А,B) и 2 экземпляра Proba<int>, причем с неравными стат. членами, что просто противоречит определению стат.члена=> единственный возможный способ описан выше. |