Cześc, trenuje programowanie obiektowe (obecnie dziedziczenie) i pisze program co p. Zelent w odcinku piątym o dziedziczeniu, tylko że rozbijam go na osobne pliki. Błąd pokazuje sie w momencie posługiwania sie konstruktorem klasu Punkt przy konstruktorze klasy Kolo.
Plik punkt.h
#ifndef PUNKT_H
#define PUNKT_H
#include <iostream>
using namespace std;
class Punkt
{
public:
Punkt(double xx = 0, double yy = 0, string n = "A");
void wczytaj();
void wypisz();
protected:
private:
double x,y;
string nazwa;
};
#endif // PUNKT_H
Plik punkt.cpp
#include "punkt.h"
Punkt::Punkt(double xx, double yy , string n)
{
x = xx;
y = yy;
nazwa = n;
}
void Punkt:: wczytaj()
{
cout << "Podaj wspolrzedna x: "; cin >> x;
cout << "Podaj wspolrzedna y: "; cin >> y;
cout << "Podaj nazwe punktu: "; cin >> nazwa;
}
void Punkt::wypisz()
{
cout << "Punkt " << nazwa << "(" << x << "," << y << ")" << endl;
}
Plik kolo.h
#ifndef KOLO_H
#define KOLO_H
#include "punkt.h"
using namespace std;
class Kolo : public Punkt
{
public:
Kolo(string nk = "kolko", string np = "S", double a = 1, double b = 1, double rr = 1);
void wypisz();
void wczytaj();
protected:
private:
double r;
string nazwa;
};
#endif // KOLO_H
Plik kolo.cpp
#include "kolo.h"
using namespace std;
Kolo::Kolo(string nk, string np, double a, double b, double rr)
:Punkt(a, b, np)
{
nazwa = nk;
r = rr;
}
void Kolo::wypisz()
{
cout << "Kolo " << nazwa << "Srodkiem kola jest ";
Punkt::wypisz();
cout << "Promien kola wynosi: " << r << endl;
}
void Kolo::wczytaj()
{
cout << "Podaj nazwe kola: "; cin >> nazwa;
cout << "Podaj promien kola: "; cin >> r;
cout << "Wczytywanie srodka kola: " << endl;
Punkt::wczytaj();
}
Błędy:
6|undefined reference to `Punkt::Punkt(double, double, std::string)'|
15|undefined reference to `Punkt::wypisz()'|
24|undefined reference to `Punkt::wczytaj()'|
undefined reference to `WinMain@16'|