|
19 / 19 / 1
Регистрация: 12.08.2011
Сообщений: 59
|
|||||||||||||||||||||
Проблема наследования от шаблонного класса.31.08.2011, 02:13. Показов 13185. Ответов 17
Метки нет (Все метки)
Привет всем!
У меня есть шаблонный класс, и наследуемый от него шаблонный класс. Базовый:
error C2143: синтаксическая ошибка: отсутствие "," перед "<" в строке
0
|
|||||||||||||||||||||
| 31.08.2011, 02:13 | |
|
Ответы с готовыми решениями:
17
Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? Вызов метода у шаблонного поля, шаблонного класса
|
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||||||
| 31.08.2011, 02:28 | ||||||
|
Похоже на неправильный порядок объявления классов.
В первом файле (ну, по-крайней мере по тому куску кода, что есть) подключать "Lgraph.h" и "Mgraph.h" ни к чему. там достаточно предварительного объявления шаблонов:
1
|
||||||
|
19 / 19 / 1
Регистрация: 12.08.2011
Сообщений: 59
|
|
| 31.08.2011, 02:33 [ТС] | |
|
Теперь появляются 4 ошибки такого вида
error LNK2028: ссылка на неразрешенную лексему (0A000010) "public: virtual class Edge<class Vertex<int,int>,int> * __clrcall lgraph<class Edge<class Vertex<int,int>,int> >::g_insert_edge(class Edge<class Vertex<int,int>,int> *)" (?g_insert_edge@?$lgraph@V?$Edge@V?$Vert ex@HH@@H@@@@$$FUAMPAV?$Edge@V?$Vertex@HH @@H@@PAV2@@Z) в функции "void __clrcall `dynamic initializer for 'const lgraph<class Edge<class Vertex<int,int>,int> >::`vftable'''(void)" (???__E??_7?$lgraph@V?$Edge@V?$Vertex@HH @@H@@@@6B@@@YMXXZ@?A0x0f4d3fa0@@$$FYMXXZ ) (((
0
|
|
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||||||
| 31.08.2011, 02:41 | ||||||
|
Это уже ошибки компоновщика, то есть програма уже компилируется.
В классе lgraph объявлена виртуальная функция g_insert_edge, но определения её нигде нет. И я не уверен, что в базовом классе деструктор стоит делать чистым. Я бы его просто виртуальным сделал, с пустым телом:
В общем, в любом случае, будет ли деструктор в базовом классе "чистой" функцией или нет, его обязательно надо определить.
1
|
||||||
|
19 / 19 / 1
Регистрация: 12.08.2011
Сообщений: 59
|
|
| 31.08.2011, 02:44 [ТС] | |
|
Огромное спасибо, все вышеописанное помогло!
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 31.08.2011, 09:04 | ||
|
0
|
||
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
| 31.08.2011, 16:53 | |
|
деструктор то как раз наследуется,
не наследуются конструкторы и оператор = по-моему .
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 31.08.2011, 19:42 | |
|
0
|
|
|
13 / 13 / 2
Регистрация: 11.02.2011
Сообщений: 55
|
||
| 01.09.2011, 09:42 | ||
|
0
|
||
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
| 01.09.2011, 11:25 | |
|
Alex1234, а што такова?
Mr.X, problem officer? пс: как тут картинки прикреплять?
0
|
|
|
Заблокирован
|
|
| 01.09.2011, 11:35 | |
|
наследуется виртуальность\невиртуальность. Деструктор по умолчанию - невиртуальный. Сами деструкторы не наследуются.
0
|
|
|
13 / 13 / 2
Регистрация: 11.02.2011
Сообщений: 55
|
|
| 01.09.2011, 12:35 | |
|
Извините если кого задел. Вот все что я думаю:
Каждый производный класс при своем уничтожении вызывает деструктор базового класса. Если деструктор базового класса объявляется виртуальным, то и все деструкторы последующих производных классов будут виртуальными. Более того деструктор базового класса может быть чисто виртуальной функцией. Но при этом в отличии от обычных чисто виртуальных функций чисто виртуальный деструктор всегда должен иметь определение, так как деструкторы производных классов неявно вызывают деструктор базового класса. Ключевое слово virtual можно опускать для виртуальных функций, унаследованных от базового класса, в производных классах. Может чего и упустил. Фразы вида "Деструкторы не наследуются" выносят мозг.
0
|
|
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|||||
| 01.09.2011, 13:21 | |||||
|
LosAngeles, не очень понял к чему это?
деструктор по моему такая обычная функция как и все и наследуется, т.к её можно явно вызвать из производного класса * Alex1234, всё норм. ![]() по вопросам отмеченным звездой хотелось бы услышать мнение эксперта, т.к сам плохо разбераюсь в сабже. желательно с ссылкой на авторитетный источник. спасибо.
0
|
|||||
|
13 / 13 / 2
Регистрация: 11.02.2011
Сообщений: 55
|
||||||||||||
| 01.09.2011, 13:49 | ||||||||||||
|
> где-то читал подобное, но толковых примеров не видел. примерчик можно? *
Нет, если в каком нибудь классе метод был виртуальным, таковым он будет и в производных, модификатор virtual стоит указывать явно, чтоб не вводить никого в заблуждение. > так вы всё таки на стороне зла или добра? ![]() Кода нибудь я познаю светлую сторону силы. Добавлено через 18 минут Мда, выражение "Деструкторы не наследуются" присутствует в литераторе, наверно это мои личные проблемы, ну да фиг с ним.
1
|
||||||||||||
|
Заблокирован
|
||||
| 01.09.2011, 13:51 | ||||
|
3242
1
|
||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||
| 01.09.2011, 13:55 | ||
|
0
|
||
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
||
| 01.09.2011, 15:12 | ||
|
Alex1234, ага
LosAngeles, спасибо, ну что касается фразы "...так как деструкторы производных классов неявно вызывают деструктор базового класса." это случайно попало в цитату
1
|
||
|
13 / 13 / 2
Регистрация: 11.02.2011
Сообщений: 55
|
|
| 01.09.2011, 15:38 | |
|
Ну, не сосем случайно, а как без неё?
0
|
|
| 01.09.2011, 15:38 | |
|
Помогаю со студенческими работами здесь
18
Возможно ли создание объекта шаблонного класса в функции этого класса?
Partial шаблонного класса (Весь основной код класса вынести в другой файл) Создание своего класса кнопки с использованием наследования от класса UserControl Обявление шаблонного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|