C++ Общая Библиотека с Шаблонами: Неопределенная ошибка символов

Вам не нужны никакие специальные трубы. Угловые 2 опционные поля необязательно. Вам просто нужно добавить? в вашем объекте

{{ (data | async)?.name }}

или

{{(name | async)?}}
42
задан nolk 20 June 2009 в 21:41
поделиться

4 ответа

В дополнение к другим ответам вы можете явно создавать экземпляры классов шаблонов. Это полезно только в том случае, если вы заранее знаете, какие типы могут принимать параметры шаблона. Вы создаете экземпляр шаблона со всеми этими типами в библиотеке.

Для вашего примера для компиляции просто добавьте следующее в конец shared.cpp :

// Instantiate myclass for the supported template type parameters
template class myclass<int>;
template class myclass<long>;

Это создает экземпляр шаблона с Type = int и помещает созданный код в общую библиотеку. Добавьте столько явных экземпляров, сколько вам нужно, для всех типов, которые вам нужны.

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

41
ответ дан 26 November 2019 в 23:49
поделиться

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

Итак, вы не можете скомпилировать это в общую библиотеку и затем связать с ней. Это просто так не работает.

20
ответ дан 26 November 2019 в 23:49
поделиться

Вам также необходимо включить реализацию классов шаблонов в файлы заголовков. Это ограничение шаблонов в C ++. Поэтому либо включите shared.cpp из основного (#include), либо просто переместите код из shared.cpp в shared.h

6
ответ дан 26 November 2019 в 23:49
поделиться

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

2
ответ дан 26 November 2019 в 23:49
поделиться
Другие вопросы по тегам:

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