Witam, piszę program wykorzystujący m. in. 3 klasy: pionek, kółko i krzyżyk. Klasy kółko i krzyżyk dziedziczą z klasy pionek. Pojawiają się 2 błędy:
- krzyzyk.obj:-1: błąd unresolved external symbol "public: __thiscall pionek::pionek(void)" (??0pionek@@QAE@XZ) referenced in function "public: __thiscall krzyzyk::krzyzyk(void)" (??0krzyzyk@@QAE@XZ)
- kolko.obj:-1: błąd unresolved external symbol "public: __thiscall pionek::pionek(void)" (??0pionek@@QAE@XZ)
Podejrzewam, że problem musi być z dziedziczeniem, bo przerzucam wszystkie funkcje z klasy bazowej do klas pochodnych, problem znika.
pionek.h
#ifndef PIONEK_H
#define PIONEK_H
class pionek
{
public:
explicit pionek();
virtual void Rysuj()=0;
void UstawWspolrzedne(float _x, float _y);
protected:
float x;
float y;
};
#endif // PIONEK_H
pionek.cpp
#include "pionek.h"
pionek::pionek()
{
}
void pionek::UstawWspolrzedne(float _x, float _y)
{
x=_x;
y=_y;
}
kolko.h
#ifndef KOLKO_H
#define KOLKO_H
#include <QGLWidget>
#include "pionek.h"
class kolko: public pionek
{
public:
explicit kolko();
virtual void Rysuj();
void UstawWspolrzedne(float _x, float _y);
signals:
public slots:
};
#endif // KOLKO_H
kolko.cpp
#include "kolko.h"
kolko::kolko()
{
}
void kolko::Rysuj()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //czyszczenie kolorem t�a
glLoadIdentity();
glTranslatef(x,y,0.0);
glColor3f(0.2471f,0.2824f,0.8f);
glBegin(GL_LINE_LOOP);
//
for (int angle=0; angle<365; angle=angle+5)
{
float angle_radians = angle * (float)3.14159 / (float)180;
float _x = 0.4 * (float)cos(angle_radians);
float _y = 0.4 * (float)sin(angle_radians);
glVertex3f(_x,_y,0);
}
glEnd();
}
krzyzyk.h
#ifndef KRZYZYK_H
#define KRZYZYK_H
#include <QObject>
#include <QtOpenGL/QGLWidget>
#include "pionek.h"
class krzyzyk: public pionek
{
public:
explicit krzyzyk();
virtual void Rysuj();
void UstawWspolrzedne(float _x, float _y);
signals:
public slots:
};
#endif // KRZYZYK_H
krzyzyk.cpp
#include "krzyzyk.h"
krzyzyk::krzyzyk()
{
}
void krzyzyk::Rysuj()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //czyszczenie kolorem t�a
glLoadIdentity();
glTranslatef(x,y,0.0);
glBegin(GL_LINES);
glColor3f(0.9294f,0.1098f,0.1412f);
glVertex2f(-0.4f,0.4f);
glVertex2f(0.4f,-0.4f);
glEnd();
glBegin(GL_LINES);
glVertex2f(0.4f,0.4f);
glVertex2f(-0.4f,-0.4f);
glEnd();
}
Będę wdzięczny za sugestie i wskazówki.