![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Если у шаблонного класса есть метод, то когда я создам несколько объектов с разными параметрами темплейта - у меня создастся несколько экземпляров тела метода в памяти кода.
а как сделать так, чтобы метод был только один, как бы темплейт не сложился? пример:
код метода не зависит от параметра "size", по этому необходимо чтобы для любого "size" был один единый метод, а для разных параметров "From", "To" или "Temp" метод размножался. -------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
используй наследование. Метод запихай в базовый класс.
|
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
А чем вызвана такая необходимость? В методе присутствуют статические переменные? Если нет, то какая тебе разница? Ну будет несколько экземпляров кода ф-ции в бинарнике, но, учитывая то, что более-менее умный компилятор сам по себе встраивает(inline) некоторые ф-ции, то такое явление может иметь место и для нешаблонных ф-ций. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
А если учесь что умные компиляторы очень часто мержат шаблоны, то вообще проблемы высосана из пальца
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Имхо, Ivan. ты сам себя перехитрил. В данном случае не нужно ставить size в качестве параметра шаблона, а память под data выделять и освобождать надо в конструкторе и деструкторе соответственно.
|
|||
|
||||
| Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Я ожидал все эти ответы, спосибо. Но проблема не из пальца, а из 128кБ памяти кода. экономить приходиться везде (это раз).
Второе: выделение памяти не канает, потому как бъект такого класса должен создаваться и заполняться на этапе компиляции и лежать в памяти кода (const), тоесть инициализироваться через фигурные скобки. Отсуда и третья проблема - нельзя наследовать (наследование не инициализируется через фигурные скобки). Пример:
-------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
| Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Придумал
Это сообщение отредактировал(а) Ivan. - 5.9.2007, 11:02 -------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |