0

есть вот такой класс: namespace lib{ class.hpp:

template <class T>
 struct point
 {
T x;

T y;
point(T X, T Y);
point&lt;T&gt;&amp; operator = (const point&lt;T&gt;&amp; p);

}; }

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

так вот я компилирую его, ar'ом архивирую, но при линковке приложения выдаётся много undefined reference to 'имя метода класса' и че делать? А то с кучей *.o файлов как то не удобно(да у меня ещё много подобных классов).

HolyBlackCat
  • 27,445
  • 3
  • 27
  • 40
  • 1
    Что делать? Не класть реализацию шаблона в .cpp... – Harry Mar 09 '24 at 15:27
  • 1
    А зачем вообще нужен кастомный operator= тут? Компилятор сам сгенерирует. – HolyBlackCat Mar 09 '24 at 15:33
  • 1
    шаблонные классы инстанцируются под каждый тип отдельно. Т.е. после компиляции point и point у вас будет ДВЕ реализации. И затем манглинг имен сделает ДВА разных экспортируемых символа – Sergey Tatarintsev Mar 10 '24 at 10:46

0 Answers0