Вот такой код:
#include "windows.h"
template<typename T> class vec2 {
public:
T x,y;
vec2() {
x = y = 0;
}
vec2(T px, T py) {
x = px;
y = py;
}
vec2<T>& operator =(const vec2<T>& v) {
x = v.x;
y = v.y;
return *this;
}
friend vec2<T> operator -(const vec2<T>&, const vec2<T>&);
};
template<typename T> inline vec2<T> operator -(const vec2<T>& u, const vec2<T>& v) {
return vec2<T> ( u.x - v.x, u.y - v.y );
}
void main()
{
vec2<float> a1;
vec2<float> a2;
vec2<float> a3;
a3 = a1 - a2;
}
Пишет вот такую ошубку при линковке:
Linking...
main.obj : error LNK2019: unresolved external symbol "class vec2<float> __cdecl operator-(class vec2<float> const &,class vec2<float> const &)" (??G@YA?AV?$vec2@M@@ABV0@0@Z) referenced in function _main
Debug/test2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
test2.exe - 2 error(s), 0 warning(s)
Компилятор VisualC (студия 6-я, а компилятор 7.1 —
Делаем из Visual C 6 Visual C 7). Никаких сервис паков не стоит.
Поясните, плиз, че тут неправильно? Или просто попробовать сервис пак поставить? Просто мож в коде че неправильно?