Błąd przy kompilacji - programowanie obiektowe

0

Witam wszystkich,

to mój pierwszy post więc przepraszam za ewentualne błędy w nim zawarte. Jestem początkujący w c++ (nawet nie nazywam siebie programistą) i mam problem z programem. O co w nim biega? Otóż muszę napisać program który po podaniu współrzędnych 3 odcinków liczy ich długości i sprawdza czy można z nich zbudować trójkąt. Niby proste gdyby nie fakt, że cała zabawa ma się odbywać z pomocą klas. Utknąłem w martwym punkcie przy kompilacji. Oto kod źródłowy:

#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;

class odcinek
{
private:
int x1, x2;
int y1, y2;
int dlugosc;

public:
odcinek(int x1, int x2, int y1, int y2);
~odcinek() {}
int odcinek::licz_dlugosc(int x1, int x2, int y1, int y2)
{
int x, y;
x=x2-x1;
y=y2-y1;
dlugosc=sqrt(xx+yy);
return dlugosc;
}
};
int main()
{
int x1, x2, y1, y2;

cout << "Podaj x1:\t" << endl;
cin >> x1;
cout << "Podaj x2:\t" << endl;
cin >> x2;
cout << "Podaj y1:\t" << endl;
cin >> y1;
cout << "Podaj y2:\t" << endl;
cin >> y2;

odcinek o1(x1, x2, y1, y2);
o1.licz_dlugosc(x1, x2, y1, y2);
return 0;

}

A oto komunikat:
undefined reference to `odcinek::odcinek(int, int, int, int)'

Proszę o pomoc

0

Znaczniki i błąd kompilacji proszę... bo nie chce mi się szukać ;P

1
  • No a gdzie jest implementacja konstruktora odcinek(int x1, int x2, int y1, int y2);?
  • int odcinek::licz_dlugosc(int x1, int x2, int y1, int y2) tutaj to odcinek:: jest niepotrzebne.
  • Po co do metody licz_dlugosc znowu podawać współrzędne? Przecież podajesz je w konstruktorze po to, żeby klasa je przechowała i na nich pracowała.
  • Zmienna dlugosc nie powinna być składową klasy.
  • Po co Ci definicja pustego destruktora? Zostaw domyślny i niczego nie deklaruj/definiuj.
  • Po co dajesz tabulator przed std::endl?
  • Nagłówki są trochę brzydkie. Powinno być <cmath> a <stdio.h> w ogóle wywal, bo nie używasz.
1

Endrju, dzięki za pomoc i spostrzeżenia :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1