Как предоставить явную специализацию только одному методу в шаблонном классе C++?

Сделал Вы пробуете:

    execBtn.setAttribute("onclick", function() { runCommand() });
5
задан BCS 26 September 2009 в 18:27
поделиться

2 ответа

В качестве альтернативы встроенному решению Мартина Йорка вы также можете сделать это в своем файле заголовка:

class D { };
template<> void C<D>::A(); // Don't implement here!

И предоставить файл .cpp с реализацией:

template<> void C<D>::A() { /* do code here */ }

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

8
ответ дан 18 December 2019 в 14:48
поделиться

Попробуйте

template<> inline void c<int>::A() { ... }
//         ^^^^^^

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

5
ответ дан 18 December 2019 в 14:48
поделиться
Другие вопросы по тегам:

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