Ошибка компоновщика 'неразрешенная внешняя ссылка': работа с шаблонами

a) руководство - чрезвычайно всесторонний, актуальный и просто огромный источник для вдохновения, в то время как решение проблем - застрявший? просматривайте/ищите руководство, оно прибудет к Вам

массивы b) - они являются пластмассовыми, они ассоциативно индексируются, они могут быть легко вложены (!) для составления некоторых диких структур данных, и существует множество функций только для одних только операций над массивом. О, и я упоминал, что рассматривал отдельные переменные как массив значений?

оценка c) () и подобные конструкции (как динамическая переменная и имена функций), которые допускают намного большую гибкость (и все еще относительно безопасны, если Вы знаете то, что Вы делаете) - ничто не бьет программу, которая в основном определяет ее собственный технологический маршрут (или даже определенное выполнение) на лету

d) по всей вероятности самая легкая вещь пропустить: поскольку почти все в механизме ЗЕНДА zVal (который в сущности является набором ссылок указателя), способность возвратиться о чем-либо как функциональное возвращаемое значение


кроме того, я хотел бы указать на одну замечательную особенность, но тот, который связан больше с источником PHP, чем язык (и так - перечисленный отдельно):

e) простота записи расширения C (главным образом интерфейсы для других объектов как OpenAL или SDL) - большая структура исходного кода и почти столько же мощных инструментов на 'внутренней части' сколько существует на 'внешней стороне' - если когда-нибудь необходимо разворачивать функциональность просто это немного далее.

8
задан Rohan Prabhu 5 December 2009 в 17:41
поделиться

3 ответа

Вы не можете разделить шаблоны на файлы .h и .cpp - вам нужно поместить полный код для шаблона в файле .h.

17
ответ дан 5 December 2019 в 07:35
поделиться

Поскольку вы не можете разместить реализацию шаблона в файлах .cpp, рекомендуется использовать файлы .inl для реализации шаблона и включать их из заголовков шаблона.

1
ответ дан 5 December 2019 в 07:35
поделиться

Вообще говоря Лучше всего писать код шаблона полностью внутри файлов заголовков. Для этого есть важная техническая причина: когда вы создаете экземпляр шаблона, компилятор C ++ должен сгенерировать код из этого шаблона, который специфичен для параметров шаблона, которые вы указали. Если ваш шаблонный код полностью помещен в ваши заголовки, это будет сделано для вас автоматически.

Это определенно возможно написать код шаблона таким же образом, как у вас, с реализацией, размещенной в файлах cpp. Однако, если вы это сделаете, вам необходимо явно создать экземпляр шаблона, который вы собираетесь использовать.

В вашем случае, вам необходимо добавить следующую строку в файл .cpp вашего проекта:

template class Allotter<QTcpSocket>;
4
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: