Obiekt klasy okrąg składa się z obiektu klasy punkt oraz ze zmiennej typu double oznaczonej jako promień
Nie, u Ciebie okrąg *jest* punktem i ma dodatkowo promień. Czy na pewno tak to powinno wyglądać?
okrag(punkt* obiekt,double promien)
{
counter++;
cout<<"uzyto konstruktora\t\tcounter="<<counter<<endl;
cout<<"okrag o wsp srodka:("<<obiekt->x<<","<<obiekt->y<<") i o promieniu r="<<promien<<endl;
}
Konstruktor obiektu nic nie robi z argumentami, ten okrąg nijak się nie inicjalizuje.
punkt* ob1=new punkt(jeden->x,jeden->y);
Skoro okrąg jest punktem (choć być może nie powinien, patrz wyżej), to możesz po prostu używać `jeden` zamiast `ob1`.
p1->pobierzX(p1);
Czemu metoda obiektu bierze argument na ten sam obiekt? To w ogóle się nie zachowuje jak metoda.
odcinek od(p1,p2);
od.dl_odcinka(p1,p2);
To samo. Odcinek ma pola `pocz`, `kon`, a nic z nimi nie robisz, tylko przekazujesz rzeczy jako argumenty do metod.
Czemu wszędzie jest tyle `friend`ów?
Na razie silnie proponuję podszkolenie się z podstawami użycia klas, zanim zaczniesz kombinować z dziedziczeniem.