Nicht aufgelöstes externes Symbol... (error LNK2001)
-
Hallo,
Ich habe angefangen C++ zu programmieren habe jetzt ein Problem.#include <windows.h> //Basisklasse class CGeometricalObject { protected: int m_x; int m_y; public: CGeometricalObject(); CGeometricalObject(int x, int y); void SetX(int x); void SetY(int y); virtual void Draw(HDC hDC); }; CGeometricalObject::CGeometricalObject() : m_x(0), m_y(0) {} CGeometricalObject::CGeometricalObject(int x, int y) : m_x(x), m_y(y) {} void CGeometricalObject::SetX(int x) { m_x = x; } void CGeometricalObject::SetY(int y) { m_y = y; } //Ableitung1 -> Rechteck class CRectangle : public CGeometricalObject { protected: int m_Width; int m_Height; public: CRectangle(); CRectangle(int x, int y, int Width, int Height); void SetWidth(int Width); void SetHeight(int Height); void Draw(HDC hDC); }; void CRectangle::SetWidth(int Width) { m_Width = Width; } void CRectangle::SetHeight(int Height) { m_Height = Height; } void CRectangle::Draw(HDC hDC) { Rectangle(hDC, m_x, m_y, m_x + m_Width, m_y + m_Height); } int main(void) { CRectangle *Rechteck = new CRectangle(); Rechteck->SetX(10); Rechteck->SetY(10); Rechteck->SetHeight(50); Rechteck->SetWidth(100); }
Jetzt ist nur das Problem, dass immer folgende Fehlermeldungen kommen:
error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __thiscall CGeometricalObject::Draw(struct HDC__*)"(?Draw@CGeometricalObject@@UAEXPAUHDC__@@@Z)". error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall CRectangle::CRectangle(void)"(??0CRrectangle@@QAE@XZ)" in Funktion "_main". fatal error LNK1120: 2 nicht aufgelöste externe Verweise.
Weis jemand was ich da ändern muss? Weil es den Fehler ja nur beim aufrufen gibt und kein Syntax-Fehler in der Klasse an sich ist.
MFG
Neokil
-
virtual void Draw(HDC hDC);
->
virtual void Draw(HDC hDC) {}
bzw.
virtual void Draw(HDC hDC) = 0
je nach dem, welches verhalten du haben möchtest - bei
= 0
kann man keine Instanz von CGeometricalObject erstellen (stichwort (pur) abstrakt).
der Sinn der ersten Variante sollte offensichtlich sein...bb
-
PS:
CRectangle();
CRectangle(int x, int y, int Width, int Height);schon mal gedacht, die auch zu implementieren?
bb
-
also vielen dank es funkrioniert endlich
MFG
Neokil