|
9 / 9 / 0
Регистрация: 15.07.2010
Сообщений: 255
|
||||||
Шаблоны классов. Ошибка `unable to match function definition to an existing declaration`22.05.2011, 22:12. Показов 4277. Ответов 7
Метки нет (Все метки)
>c:\users\администратор\documents\visu al studio 2010\projects\weiss\ch3\3-7\3-7\singlebuffer.cpp(9): error C2244: 'SingleBuffer<T>::get' : unable to match function definition to an existing declaration 1> definition 1> 'T SingleBuffer<T>::get(void) const' 1> existing declarations 1> 'T SingleBuffer<T>::get(void) const' На msdn'е (ошибка: LNKC2244) http://msdn.microsoft.com/en-u... 90ysd.aspx приведённые варианты ошибок не подходят. Как быть?
0
|
||||||
| 22.05.2011, 22:12 | |
|
Ответы с готовыми решениями:
7
unable to match function definition to an existing declaration Ошибка компиляции: a function-definition is not allowed here before '{' token; Ошибка: implicit declaration of function 'strcmp' |
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 22.05.2011, 22:21 | |
|
T get() const; - объявление в классе.
template у тебя перед классом уже есть.
0
|
|
|
9 / 9 / 0
Регистрация: 15.07.2010
Сообщений: 255
|
||
| 22.05.2011, 22:25 [ТС] | ||
|
LNK2019 http://msdn.microsoft.com/en-u... 80%29.aspx
0
|
||
|
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
|
|
| 22.05.2011, 22:36 | |
|
alexsvk, Вам правильно подсказали, а чтобы избежать ошибки LNK2019, нужно реализацию методов класса поместить в заголовочный файл, туда же где описание класса (ведь у Вас же в разных файлах или я ошибаюсь?). Теоретически можно разносить описание в *.h, а реализацию в *.cpp, хороший тон и всё такое, но с шаблонами классов не канает и компилятор выплевывает LNK2019, надо и то и другое размещать в *.h файле.
И статью по теме: http://www.rsdn.ru/article/cpp/templmod.xml
0
|
|
|
9 / 9 / 0
Регистрация: 15.07.2010
Сообщений: 255
|
||||||
| 22.05.2011, 22:59 [ТС] | ||||||
|
Phantom, да, не все компиляторы поддерживают разделение, но можно объявить класс экспортируемым, тогда в в файле входной точки функции-члены будут конкретизироваться при определении шаблона класса. Но!
При объявлении
>c:\users\администратор\documents\visu al studio 2010\projects\weiss\ch3\3-7\3-7\singlebuffer.h(3): warning C4237: 'export' keyword is not yet supported, but reserved for future use 1>c:\users\администратор\documents\visua l studio 2010\projects\weiss\ch3\3-7\3-7\singlebuffer.h(3): error C2143: syntax error : missing ';' before ''template<'' 1>c:\users\администратор\documents\visua l studio 2010\projects\weiss\ch3\3-7\3-7\singlebuffer.h(3): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int Работаю в VS 10.0
0
|
||||||
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
| 22.05.2011, 23:08 | |
|
alexsvk, не работает эта фича в студии и не будет работать. Как вам пишет компилятор в предупреждении, ключевое слово export своих функций не выполняет, но оставлено в реализации "на всякий случай", из стандарта также будет полностью убрано, так что надеяться на экспортируемые шаблоны не приходится.
0
|
|
|
9 / 9 / 0
Регистрация: 15.07.2010
Сообщений: 255
|
|
| 22.05.2011, 23:10 [ТС] | |
|
Ma3a, выходит, что разделять компиляцию больше не представляется возможным?
0
|
|
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
| 22.05.2011, 23:12 | |
|
alexsvk, выходит, что так. По крайней мере я знаю лишь один компилятор, который поддерживает export -- реализация от EDG, больше примеров мне неизвестно.
1
|
|
| 22.05.2011, 23:12 | |
|
Помогаю со студенческими работами здесь
8
Ошибка: friend declaration declares a non-template function Ошибка при компиляции 'Type-declaration character does not match declared data type.'
Expected function body after function declaration Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|