Cześć, mam dość chyba dziwny problem (jak zwykle). Podczas budowania projektu dostaję unresolved externals. Projekt bez problemów budował się w poprzedniej wersji systemu (jest częścią większego systemu) - w tej samej wersji Visuala - 2012 update 5.
Mam klasę bazową:
class Base
{
public:
virtual void addRef() = 0;
virtual void release() = 0;
}
Potem mam klasę, która po niej dziedziczy:
class Derived: public Base
{
//ma tu jakieś metody, ale poza addRef i release
}
Następnie mam klasę już konkretną zdefiniowaną tak:
template<class T>
class StaticObject : public T
{
public:
void addRef() { }
void release() { }
};
I moją klasę, która dziedziczy po niej:
class MyDerived: public StaticObject<Derived>
{
}
W momencie kompilacji, dostaję błąd linkera odnoszący się do metod addRef i release:
unresolved external symbol "public: virtual void __thiscall StaticObject<class Derived>::addRef(void)" (?addRef@?$StaticObject@VDerived@@@@UAEXXZ)
(analogiczny komunikat przy metodzie release).
Ale jeśli do mojej klasy MyDerived dodam te dwie metody:
void addRef() { }
void release() { }
(w taki sam sposób jak w klasie StaticObject), to już się nie pulta i mu pasuje. O co tu chodzi?
Liby mam wszystkie.