error LNK2019: unresolved external symbol "public: int __thiscall Daedelus::Vector2D<int>::getY(void)const " (?getY@?$Vector2D@H@Daedelus@@QBEHXZ) referenced in function "public: virtual void __thiscall Daedelus::Mouse::setPosition(class Daedelus::Vector2D<int> const &)" (?setPosition@Mouse@Daedelus@@UAEXABV?$Vector2D@H@2@@Z) Mouse.obj
anderror LNK2019: unresolved external symbol "public: int __thiscall Daedelus::Vector2D<int>::getX(void)const " (?getX@?$Vector2D@H@Daedelus@@QBEHXZ) referenced in function "public: virtual void __thiscall Daedelus::Mouse::setPosition(class Daedelus::Vector2D<int> const &)" (?setPosition@Mouse@Daedelus@@UAEXABV?$Vector2D@H@2@@Z) Mouse.obj
// Vector2D.h
#pragma once
namespace Daedelus
{
template<class T>
class Vector2D
{
private:
T m_x;
T m_y;
public:
Vector2D(void);
Vector2D(T x, T y);
~Vector2D(void);
T getX() const;
T getY() const;
};
}
// Vector2D.cpp
#include "Vector2D.h"
namespace Daedelus
{
template<class T>
Vector2D<T>::Vector2D(void)
{
m_x = 0;
m_y = 0;
}
template<class T>
Vector2D<T>::Vector2D(T x, T y)
{
m_x = x;
m_y = y;
}
template<class T>
Vector2D<T>::~Vector2D(void)
{
}
template<class T>
T Vector2D<T>::getX() const
{
return m_x;
}
template<class T>
T Vector2D<T>::getY() const
{
return m_y;
}
}
// IMouse.h
#pragma once
#include "Vector2D.h"
namespace Daedelus
{
/// Button mappings for the mouse.
enum E_MOUSE_BUTTON
{
EMB_LEFT = 0,
EMB_RIGHT = 1,
EMB_WHEEL = 2
};
/// Interface for querying the mouse.
class IMouse
{
public:
virtual ~IMouse(void) {};
virtual void setPosition(const Vector2D<int> &pos) = 0;
};
}
// Mouse.h
#pragma once
#include <dinput.h>
#include "Vector2D.h"
#include "IMouse.h"
namespace Daedelus
{
/// Implements IMouse
/// This implementation utilizes DirectInput
class Mouse : public IMouse
{
private:
// private variables omitted for clarity
public:
Mouse(IDirectInput8* pDirectInput, HWND hWnd);
~Mouse(void);
void setPosition(const Vector2D<int> &pos);
};
}
// Mouse.cpp
#include "Mouse.h"
namespace Daedelus
{
Mouse::Mouse(IDirectInput8* pDirectInput, HWND hWnd)
{
// Mouse initialization omitted for clarity
}
/// Destructor.
Mouse::~Mouse(void)
{
// Mouse cleanup omitted for clarity
}
/// Sets the position of the mouse cursor.
void Mouse::setPosition(const Vector2D<int> &pos)
{
int x = pos.getX(); // LNK2019 Error
int y = pos.getY(); // LNK2019 Error
SetCursorPos(x, y);
}
}