![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
gray_k |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1015 Регистрация: 9.1.2003 Где: Москва Репутация: нет Всего: 22 |
Я пытаюсь создать шаблон класса со статическим элементом:
Затем в другом модуле я пишу:
Никто не сталкивался с подобным? -------------------- С уважением. Gray. |
||||
|
|||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
А так не пробывал:
|
|||
|
||||
gray_k |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1015 Регистрация: 9.1.2003 Где: Москва Репутация: нет Всего: 22 |
Пробовал, пробовал.
Тут дело в том, что статические элементы в С++ не наследуются. У меня здесь вопрос как бы реализовать код так, чтобы можно было для разных классов использовать некоторые одинаковые методы работы со статическими элементами. -------------------- С уважением. Gray. |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
То gray_k: так может применить виртуальное наследование. Если хочешь, чтоб базовый класс (объект) был для всех один
|
|||
|
||||
bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Че та я не понял???
![]()
Все компилится! |
||||
|
|||||
gray_k |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1015 Регистрация: 9.1.2003 Где: Москва Репутация: нет Всего: 22 |
Нет немного не то. У меня есть несколько классов. У них элементы и функции - статические. Причем элементы различаются только типом, а так их набор одинаков. И для всех классов есть несколько типовых статических функция, которые меняют эти переменные. Естественно возникла идея, реализовать это в шаблоне. Собственно я сделал уже. Вот реализация:
шаблон:
дочерние классы:
обращение к элементам:
Добавлено @ 14:40
А у меня такой код не скомпилился ![]() У тебя компилятор какой? У меня Builder C++6. -------------------- С уважением. Gray. |
||||||||
|
|||||||||
bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Че-та я не понял. В чем проблема?
Не понимаю зачем делать шаблон, если все переменныые int Вот код, все работает:
Добавлено @ 14:53 Компилер: MSVC6 |
||||
|
|||||
gray_k |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1015 Регистрация: 9.1.2003 Где: Москва Репутация: нет Всего: 22 |
Это просто тестовый пример. Настоящая реализация другая. -------------------- С уважением. Gray. |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
gray_k
А работает? У меня все ОК |
|||
|
||||
gray_k |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1015 Регистрация: 9.1.2003 Где: Москва Репутация: нет Всего: 22 |
Код во втором ответе работает
![]() ![]() А то что я написал в вопросе не компилится, и про который ты сказал, что у тебя скомпилился. Ни на Борладе, ни на VC.NET. -------------------- С уважением. Gray. |
|||
|
||||
Sined |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
gray_k, вот что у меня чработало в 6 билдере. Может быть... ошибка где-то рядом.
Работает даже так.
Ну я и идиот!!!! Слава Богу, пока репутации нет, а то сейчас получил бы по шапке. Пример, рабочий, однако в его интерпретации я сильно ошибся. Правильно, видимо,так 1) При наследовании от шаблонного класса ты создаешь по сути дела 2 класса свой+шаблонный. За этим шаблонным(например, Proba<int>)ты закрепляешь 1 статический тип данных, потом все классы типа Proba<int> будут этим членом данных пользоваться. 2) Теперь представь, что у тебя есть 2 класса наследующих от Proba<int> и в одном ты стат.член изменил, а вдругом он по идее изменится не может, НО по сути дела у тебя есть 4 класса 2 наследника(А,B) и 2 экземпляра Proba<int>, причем с неравными стат. членами, что просто противоречит определению стат.члена=> единственный возможный способ описан выше. Это сообщение отредактировал(а) Sined - 21.5.2004, 17:16 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |