42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
||||||||||||||||
1 | ||||||||||||||||
Разделение программы на файлы29.01.2013, 16:00. Показов 4728. Ответов 21
Метки нет (Все метки)
Всем привет. Изучаю алгоритмы сортировки. Вот что уже написал:
0
|
29.01.2013, 16:00 | |
Ответы с готовыми решениями:
21
Разделение программы на файлы Разделение программы на .h .cpp файлы Классы в С++. Разделение программы на файлы. Объясните пожалуйста на пальцах Разделение на файлы |
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
|
29.01.2013, 16:13 [ТС] | 2 |
Кажется я обнаружил, как ошибку исправить. Я попробовал переписать весь код убрав шаблоны и используя вместо класса T везде тип int. Программа заработала. Но в чём тогда ошибка? И как использовать шаблоны при разделение программа на файлы?
Добавлено через 39 секунд Чего я незнаю?
0
|
73 / 73 / 12
Регистрация: 22.01.2013
Сообщений: 231
|
||||||||||||||||
29.01.2013, 16:15 | 3 | |||||||||||||||
В чем причина не знаю, но скорее всего связано с тем щи вы используемой шаблоны. Там есть свои причуды связанные с файлами. Но если в main включить sort.cpp то все работает.
Вот так работает:
1
|
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
|
29.01.2013, 16:20 [ТС] | 4 |
Что вы имеет ввиду?
Добавлено через 43 секунды Как же тогда использовать шаблоны при раздельной компиляции?
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
29.01.2013, 16:21 | 5 |
И объявления и реализация шаблонов должны быть в одном .h файле, только если это не специализация.
Никак. Все в один .h файл.
2
|
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
|
|
29.01.2013, 16:21 | 6 |
Шаблоны нельзя использовать при раздельной компиляции, потому что значения в шаблоны подставляются на момент компиляции основной программы
1
|
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
|
|
29.01.2013, 16:27 [ТС] | 7 |
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
29.01.2013, 16:29 | 8 |
bgm123, это специфика механизма работы шаблонов.
0
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
|
31.01.2013, 18:08 | 9 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
31.01.2013, 18:11 | 10 |
Alexxx7, К шаблонам данное не относится. Даже boost, использует включение .ipp файлов довольно нечасто.
0
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
||||||||||||||||
31.01.2013, 18:24 | 11 | |||||||||||||||
ForEveR, Тогда подскажите у меня частный случай и так лучше впреть не делать?
main.cpp
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
31.01.2013, 18:33 | 12 |
Alexxx7, неудобно в клиентском коде подключать два файла, относящиеся по факту к одной сущности. Если так тянет разделить код по файлам, то в конце заголовочного файла можете подключить файл с реализацией.
0
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
|
31.01.2013, 18:41 | 13 |
0x10, Да но тогда его нужно делать тоже .h, я подставлял с разширением .cpp выдаёт ошибку что функции уже объявлены. О ещё вариант, можно подключить в клиентский код super.h а в него включить
#include "arry.h" #include "arry.cpp" тоже работает, как говорится и "рыбку съесть - и бутылку сдать".
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
31.01.2013, 18:48 | 14 |
0
|
73 / 73 / 12
Регистрация: 22.01.2013
Сообщений: 231
|
||||||
31.01.2013, 18:52 | 15 | |||||
Можно просто подключить в конец объявления класса, и не нужно будет это делать
И все счастливы
0
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
|
31.01.2013, 18:52 | 16 |
Toshkarik, если нельзя, значит не будем, только почему в книге пишут что можно, или это просто выворот такой, который в последствии может стать минингитом?
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
31.01.2013, 18:54 | 17 |
The_bolT, так тоже нельзя делать.
Добавлено через 48 секунд Alexxx7, где это пишут?
0
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
|
31.01.2013, 18:54 | 18 |
стр.327 "С++ для професионалов" А.Скотлер, Скотт Дж.Клепер?
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
31.01.2013, 19:28 | 19 |
Alexxx7, я эту книгу не читал. Но думаю авторы имели ввиду, что можно так инклудить хоть .txt файл, главное чтоб он не являлся отдельной единицей трансляции, содержащей определение нешаблонных функций/классов. Все дело в удобстве.
0
|
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
|
|
31.01.2013, 19:33 | 20 |
Toshkarik, Значит можно?
0
|
31.01.2013, 19:33 | |
31.01.2013, 19:33 | |
Помогаю со студенческими работами здесь
20
Разделение на файлы Разделение кода на cpp и h файлы Разделение чередующихся строчек в разные файлы Поясните ошибку (разделение класса на файлы) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |