170 похожих чатов

Семён Кириллов: Всем привет! Есть вопрос по поводу программирования на C++.

Буду рад, если поможете.
В общем есть класс, в нём шаблонный метод:
/* File class_a.hpp */
#ifndef CLASS_A_HPP
#define CLASS_A_HPP
class A
{
private:
int n;
public:
template <typename T>
int foo(T abc);
/* остальные не шаблонные методы */
}
#endif // CLASS_A_HPP
Возникает вопрос. Где написать реализацию метода так, чтобы не в классе и можно было линковать с динамической библиотекой, используя файл class_a.hpp.
В интернете всё как правило сводится к реализации шаблонного метода в .hpp или вынесением реализации в .inl (все не шаблонные мотоды соответственно в .cpp). Но будте ли это работать, если нам дан .hpp и динамическая библиотека для линковки? Подобный вопрос возникает и в случае с inline функциями.
Заранее спасибо.

6 ответов

18 просмотров

Пиши в заголовке, прямо ВМЕСТО твоего объявления этого метода

Шаблонный код не может быть экспортирован в явном виде из .dll всё равно, так что твой вопрос вообще лишён смысла.

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

твой вопрос вообще лишён смысла.

если на момент конпеляции либы те не знаеш для каких типов нужны реализации шаблона то они и не создадутся

Шаблонный код можно экспортировать из .dll только в одном виде: Инстанциировать шаблон явно и инстанциированный код экспортировать. Но это уже и не шаблон как бы.

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта