![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Да (можно еще найти причины, но этой достаточно), а теперь смотри, добиться того, что ты описал в случае с шаблонами можно ТОЛЬКО ИСПОЛЬЗОВАВ ЭКСПОРТ ШАБЛОНОВ. Так зачем мучиться если все равно цель недостижима? Включив CPP файл инклудом ты желаемого не получишь все равно. Потому я и говорю, пиши в заголовочном файле.
Понимаешь, не нужна причина чтобы чего-то не делать, нужна причина чтобы делать. Назови мне причину, ты выполняешь определенные действия, для чего? что ты получаешь от этого? Затрудняешь чтение и сопровождение своей программы. Что ты получаешь взамен? Если назовешь себе хоть одну весомую причину - делай так. Это сообщение отредактировал(а) azesmcar - 29.7.2009, 15:39 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Brodyaga, Если кого-то цитируете, выделяйте текст, и нажимайте кнопочку "Быстрая цитата". Так как не понятно кого вы цитируете.
п.с. Ощущение, что Brodyaga не способ решения ищет, а способ все усложнить. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Brodyaga |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Ну как же... Шаблон будет разделён на два файла h и cpp. где надо там я буду подкючать h файл. И не будет никакого инклуда cpp файла. Тоесть всё как я и хотел но без файла myclassinst.cpp
Это сообщение отредактировал(а) Brodyaga - 29.7.2009, 18:24 |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Да, это вариант..и ты даже получишь желаемое, но за счет чего? Теперь каждый раз когда тебе нужно использовать шаблон для нового типа, придется лезть в файл и добавлять строку, а если ты хочешь использовать свой шаблон для типа, который не известен твоему cpp файлу? Дополнительно делать в него include. Так твой cpp файл скоро разрастется, а что если завтра ты решишь что твой шаблонный класс это шедевр созданный твоими собственными руками и ты решишь увековечить его в виде lib-ы. Как потом пользователи твоей библитеки будут использовать твой шаблонный класс со своими типами? Тут теряется мощь шаблонов в некотором смысле. Если это устраивает - пиши. |
|||
|
||||
| Леопольд |
|
||||||||||||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Судя по всему, этим твои знания о раздельной компиляции и ограничиваются . Это тоже самое, что сказать - "С++ это язык программирования, и он нужен для того чтобы писать на нём программы". Но если это всё что человек знает про С++, то программистом его назвать нельзя, не так ли? Мои вопросы тебе непонятны именно потому что ты не знаешь как именно работает раздельная компиляция, в том числе и с шаблонами. Я советую тебе, изучить этот вопрос, потому что если бы ты знал его, то не начал бы этот топик вообще Вот ещё один "непонятный" примерчик того что ты не знаешь как работает линковка. Я предполагаю что ты не знаешь этого потому что ты ни на один "непонятный" вопрос до сих пор не ответил ничего вразумительного: Почему не компилируется вот это? header.h
first.cpp
second.cpp
А вот это, почти тоже самое, компилируется без проблем. header.h
first.cpp
second.cpp
А вот это, тоже не компилируется header.h
first.cpp
second.cpp
Добавлено @ 21:12
Этого вообще никогда не должно быть. Для этого есть *.h или, частенько, в случае с шаблонами, *.hpp Это сообщение отредактировал(а) Леопольд - 29.7.2009, 21:16 -------------------- вопросов больше чем ответов |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
шаблоны тут не при чем си - *.c и *.h cpp - *.cpp *.hpp (ну а *.h им достались по наследству |
|||
|
||||
| Brodyaga |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Это что экзамен чтоли? я тебе должен сейчас всё рассказать, что знаю про раздельную компиляцию?
И не собираюсь отвечать. Даже читать твои этажи кода не хочу. Я тебе не собираюсь ничего доказывать о своих знаниях. Если хочешь обсудить раздельную компиляцию, создай отдельную тему.
Можно эти строки вынести в отдельный h. Ну вообщем-то я тебя понял, спасибо! Буду выбирать, что для меня лучше. +1! ;) |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Эти "этажи" настолько элементарны, что не заслужили такого названия Это сообщение отредактировал(а) Леопольд - 30.7.2009, 09:49 -------------------- вопросов больше чем ответов |
|||
|
||||
| Brodyaga |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
И у меня не возникают. Всё прекрасно компилируется. Просто возник небольшой казус с шаблонами, так как определялись повторно конструктор и деструктор. А так всё норм, выслушал плюсы и минусы явного инстанцирования и полного включения. Далее обсуждать чтото в этой теме не намерен.
Если тебе хочется показать всем насколько ты круто знаешь линковку, то для этого не нужно флудить о ней в этой теме и задавать мне вопросы. Просто напиши статейку и выложи её здесь. Думаю это на самом деле будет полезно, без шуток. |
||||
|
|||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Мне так показалось из твоих постов, но я не уверен в этом. Возможно, ты просто очень сильно не любишь отвечать на вопросы. Я не бахвалился... Добавлено через 7 минут и 6 секунд
Дело в том, что я вижу непосредвенную связь между, линковкой и инстанцирванием шаблонов. Я задавал наводящие вопросы, но увы, всё зря... Добавлено через 10 минут и 9 секунд По шаблонам есть неплохая книга - "Шаблоны С++. Справочник разработчика". Местами тяжеловато написанно, но там раскрыто много вопросов. Это сообщение отредактировал(а) Леопольд - 30.7.2009, 12:18 -------------------- вопросов больше чем ответов |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Я заметил, случайно (если мне вообще не показалось) что кое-кто в *.h держит всякие разные объявления + реализации inline функций (глобальные переменные не рассматриваю), соответственно в *.сpp определения не inline фукнций. static функции могут быть определенны в хидере только если это не члены класса (inline static тоже можно определить в хидере, в том числе, если функция - член класса) В *.hpp шаблоны - реализация которых, как правило, находится там же, независимо от линковки. Мне это показалось удобным, и я делаю именно так Это сообщение отредактировал(а) Леопольд - 30.7.2009, 15:48 -------------------- вопросов больше чем ответов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |