Сделал Вы пробуете:
execBtn.setAttribute("onclick", function() { runCommand() });
В качестве альтернативы встроенному решению Мартина Йорка вы также можете сделать это в своем файле заголовка:
class D { };
template<> void C<D>::A(); // Don't implement here!
И предоставить файл .cpp с реализацией:
template<> void C<D>::A() { /* do code here */ }
Таким образом, вы избежите множественных определений, предоставив одинокий. Это также хорошо для того, чтобы скрыть реализации для определенных типов от файла заголовка шаблона при публикации библиотеки.
Попробуйте
template<> inline void c<int>::A() { ... }
// ^^^^^^
Как вы определили в файле заголовка. Каждый исходный файл, который его видит, будет создавать явную его версию. Это приводит к ошибкам при связывании. Так что просто объявите его встроенным.