|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
31.01.2012, 21:47 | #1 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Данные-члены шаблоны
Дано: Есть класс, имеющий шаблонный метод.
Требуется: в хэдере класса только прототипы методов, реализации - в cpp Проблема: Другая единица трансляции не видит реализацию шаблонного метода, поскольку эта реализация находится в соседней единице трансляции. //main.cpp Код:
Код:
Код:
Однако, требование к задаче: в хэдере класса только прототипы методов, реализации - в cpp. Что можно сделать? Последний раз редактировалось _Bers; 31.01.2012 в 21:51. |
31.01.2012, 21:54 | #2 | ||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
Цитата:
2. сменить язык 3. extern шаблонов. не знаю, что его поддерживает, никогда не использовал (этот пункт только "для галочки") пс Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 31.01.2012 в 22:03. |
||
01.02.2012, 13:02 | #3 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Задачку решил. Если кому интересно:
Я решил исходить из соображения, что использующий класс - это потребитель. А используемый - это поставщик услуг. Суть идеи в том, что потребителю не нужны объекты поставщика услуг в "сферическом вакууме". Ему нужны конкретные услуги, которые он может получить. Другими словами, Объект Потребителя получает на входе Объект Поставщика услуг, только для того, что бы запустить какие конкретные методы у поставщика услуг. При этом, не так важно, как именно он это сделает. Главное - что бы это было безопасно, и удобно. Таким образом, задача по сокрытию деталей реализации обоих классов будет решена, если Потребитель сумеет "сохранить" знание об объекте поставщика, и запустить его методы изнутри своих обычных методов. А обычные методы всегда легко можно упрятать внутри cpp. Вот так может выглядеть поставщик услуг: Код:
Код:
|
01.02.2012, 13:03 | #4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Вот так может выглядеть потребитель:
Код:
Код:
Код:
1. Классы абсолютно никак не связанны. Не имеют никаких общих точек соприкосновения. Абсолютно ничего не знают друг о друге. 2. Между собой могут взаимодействовать абсолютно любые классы, если они придерживаются некоторого контракта. Контроль за этим осуществляется на этапе компиляции 3. Потребитель имеет только один не скрытый метод, который ничего интересного не расскажет. Все остальное теперь легко можно прятать в cpp Последний раз редактировалось _Bers; 01.02.2012 в 13:05. |
01.02.2012, 13:17 | #5 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
какая-то отвратительная реализация Наблюдателя
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
01.02.2012, 13:18 | #6 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
01.02.2012, 13:22 | #7 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
что тут предлагать то. открой банду четырех и посмотри на классическую реализацию
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
01.02.2012, 13:40 | #8 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
01.02.2012, 14:11 | #9 | ||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
какие требования? это требование? Цитата:
ДОБАВЛЕНО: и да Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 01.02.2012 в 14:28. |
||
01.02.2012, 15:27 | #10 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Дано: Есть класс, имеющий шаблонный метод.
Требуется: в хэдере класса только прототипы методов, реализации - в cpp У меня нет проблем с классическим обсервером. Просто он не подходит для решения данной задачи |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разнести данные в заготовленные шаблоны по критериям | Proha | Microsoft Office Excel | 5 | 02.03.2011 21:22 |
Статические члены класса | _-Re@l-_ | Общие вопросы C/C++ | 8 | 20.01.2011 23:18 |
члены последовательности | amikulia | Помощь студентам | 0 | 14.01.2011 12:35 |
наибольший и последний члены | Zhasik | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 27.12.2010 08:53 |
Static члены | assasin | Общие вопросы C/C++ | 2 | 21.08.2009 10:54 |