1 | ||||||||||||||||
Шаблоны. Ошибка компиляции: "Не удается сопоставить определение функции существующему объявлению"01.09.2014, 00:31. Показов 10448. Ответов 11
Метки нет (Все метки)
vector.h
0
|
01.09.2014, 00:31 | |
Ответы с готовыми решениями:
11
С++: Не удается сопоставить определение функции существующему объявлению Шаблоны и определение SSE типов на этапе компиляции Функции Now и Date. Oшибка 'Не удаётся загрузить объект, поскольку к нему нет доступа на данном компьютере. Ошибка компиляции.' Функции Now и Date. Oшибка 'Не удаётся загрузить объект, поскольку к нему нет доступа на данном компьютере. Ошибка компиляции.' |
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||||||
01.09.2014, 00:54 | 2 | |||||
Сообщение было отмечено Dani как решение
Решение
1
|
01.09.2014, 01:05 [ТС] | 3 | ||||||||||
Теперь пишет ошибку линковки, что не может найти конструктор и деструктор. Что еще не так?
Вот так главный файл выглядит (откуда вызываю эти функции):
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
01.09.2014, 01:27 | 6 |
Не обязательно в .h. Импелементация должна быть в одной единице трансляции с кодом, который ее использует. Так как шаблон должен быть инстанцирован уже на стадии компиляции, то компилятор должен иметь доступ к реализации. В случае с подключением .h где только объявление, компилятор не знает, откуда ему брать имплементацию.
Почитай здесь: http://www.bogotobogo.com/cplu... n_file.php Добавлено через 3 минуты Ну и цитату из книги Страуструпа заодно:
1
|
01.09.2014, 01:39 [ТС] | 7 | |||||||||||||||
Спасибо большое за ссылку.
Вот немного подправил код: vector.h
main.cpp
0
|
18841 / 9840 / 2408
Регистрация: 30.01.2014
Сообщений: 17,281
|
||||||
01.09.2014, 01:53 | 8 | |||||
Лучше подходит потому что. Передавать правильный тип
1
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
01.09.2014, 01:53 | 9 |
Потому что best match. Типы аргументов - (int, int), а не (unsigned int, double), как в другом конструкторе.
Можно исключить этот конструктор из набора рассматриваемых перегрузок, если инстанциированный тип - не итератор, с помощью SFINAE. Вроде в std::vector именно так и сделано.
1
|
99 / 70 / 13
Регистрация: 15.12.2013
Сообщений: 455
|
|
01.09.2014, 02:31 | 11 |
Dani, в срр файле передопределением функции вроде надо написать export и можно будет по идее раздельно компилировать определения и объявления... Попробуй
Добавлено через 9 минут Ошибся, в h файле перед объявлением
1
|
18841 / 9840 / 2408
Регистрация: 30.01.2014
Сообщений: 17,281
|
||||||
01.09.2014, 18:16 | 12 | |||||
Да, потому что первый аргумент unsigned int, а 6 имеет тип int. Стандартный вектор, между прочим, себя так же ведет.
Лечится, опять же, передачей правильных типов:
1
|
01.09.2014, 18:16 | |
01.09.2014, 18:16 | |
Помогаю со студенческими работами здесь
12
Не удается установить соединение с удаленным помощником, не удается сопоставить DNS-имя удаленного компьютера. Шаблоны странная ошибка во время компиляции ошибка при компиляции проги, использущей шаблоны классов Ошибка при компиляции: не удается найти указанный файл Ошибка компиляции и определение массивов Ошибка компиляции и определение массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |