0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
||||||
1 | ||||||
не удается релизовать свою функцию sort для шаблонного массива06.06.2013, 20:50. Показов 1744. Ответов 22
Метки нет (Все метки)
функция должна получать Array<T>::Iterator
make all Building file: ../Menu.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Menu.d" -MT"Menu.d" -o "Menu.o" "../Menu.cpp" ../Menu.cpp: In member function 'void Menu::start()': ../Menu.cpp:19: error: call of overloaded 'sort(Array<int>::Iterator, Array<int>::Iterator)' is ambiguous ../sort.h:19: note: candidates are: void sort(Iterator, Iterator) [with Iterator = Array<int>::Iterator] /usr/include/c++/4.2.1/bits/stl_algo.h:2816: note: void std::sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = Array<int>::Iterator] make: *** [Menu.o] Error 1
0
|
06.06.2013, 20:50 | |
Ответы с готовыми решениями:
22
Написать функцию sort() для сортировки массива структур Написать функцию Quick Sort для массива с 2000 элементов В функцию sort не передается значения массива из другой функции Выбор шаблонного варианта для аргумента-массива |
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
|
06.06.2013, 20:59 [ТС] | 3 |
MrGluck, да...
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
06.06.2013, 21:02 | 4 |
Ахалай-махалай
У вас идет сначала подстановка к ф-ции sort std::, а далее, т.к. std::sort уже существует, то банальное переопределение функции. А за подобные вещи (using namespace ...) в хедерах принято бить по рукам. Добавлено через 1 минуту Т.к. последствия вы увидели. Но сейчас вы разрабатывали заголовочный файл, а бывает, что кто-то пользуется вашей библиотекой, и от одного инклюда срывается весь проект.
0
|
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
||||||
06.06.2013, 21:10 [ТС] | 6 | |||||
MrGluck,
таки да,но namespace есть и в Menu.cpp (задан учителем) на сколько понял преподавтелей,мне нужно сделать overload функции sort(STL) Добавлено через 41 секунду DiffEreD,
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
06.06.2013, 21:26 | 8 | |||||
Ну так а так сделать нельзя?
0
|
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
||||||
06.06.2013, 21:29 [ТС] | 9 | |||||
MrGluck,
убрал, та же ошибка... вот что просят: Function Template sort (RandomAccessIterator start, RandomAccessIterator end) *This function will use just Array iterators Menu.cpp :
0
|
06.06.2013, 21:32 | 10 | |||||
Stasito, как небольшой пример:
0
|
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
|
06.06.2013, 21:35 [ТС] | 11 |
gray_fox,
если вместо class Iterator пишу Array<T>::Iterator или как вы подсказали то выдает: /usr/include/c++/4.2.1/bits/stl_iterator_base_types.h:129: error: no type named 'iterator_category' in 'class Array<int>::Iterator' /usr/include/c++/4.2.1/bits/stl_iterator_base_types.h:130: error: no type named 'value_type' in 'class Array<int>::Iterator' /usr/include/c++/4.2.1/bits/stl_iterator_base_types.h:131: error: no type named 'difference_type' in 'class Array<int>::Iterator' /usr/include/c++/4.2.1/bits/stl_iterator_base_types.h:132: error: no type named 'pointer' in 'class Array<int>::Iterator' /usr/include/c++/4.2.1/bits/stl_iterator_base_types.h:133: error: no type named 'reference' in 'class Array<int>::Iterator' и не видит мою функцию
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
06.06.2013, 21:39 | 12 | |||||
Stasito, я забыл typename
0
|
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
|
06.06.2013, 21:50 [ТС] | 13 |
gray_fox,
hh)) спасибо,но к сожалению нет)) Добавлено через 7 минут DiffEreD, вобщем я реализовал похожий вариант но мне нельзя ипользовать #include <iterator> #include <algorithm> #include <cstdlib>
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
06.06.2013, 21:51 | 14 |
Stasito, так значит в Menu.h есть #include <algorithm> ?
0
|
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
|
06.06.2013, 21:53 [ТС] | 15 |
gray_fox,
no
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
06.06.2013, 21:55 | 16 |
Stasito, тогда как получается конфликт с std::sort?
0
|
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 25
|
|
06.06.2013, 22:04 [ТС] | 17 |
gray_fox,
не знаю наверное из-за using namespace std; в Menu.h но его убрать нелзя
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
06.06.2013, 22:06 | 18 |
Stasito, просто где то включается std::sort. Я пока из стандартных заголовков вижу только iostream, с ним прблем нет: http://ideone.com/8guHou .
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||||||
06.06.2013, 22:07 | 19 | ||||||||||
MyIterator.h
gray_fox, как ни странно, иногда std::sort подключается через iostream oO Точного компилера сказать не могу, помню, что такое было
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
06.06.2013, 22:10 | 20 |
0
|
06.06.2013, 22:10 | |
06.06.2013, 22:10 | |
Помогаю со студенческими работами здесь
20
Как создать свою функцию, удаляющую элементы массива, удовлетворяющие предикату? Не удается передать значение массива через функцию. Си Использование std::sort() для сортировки числового массива Как правильно использовать sort() для сортировки массива? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |