Witam, mam problem z poprawnym przesłaniem tablicy obiektów Kolo z maina do funkcji klasy dziedzicznej,chodzi mi o przesyłanie całych tablic tych obiektow a nie tylko jednego elementu.Byc może nie potrzebnie robiłem z tego klase dziedziczną ale nie widze innego rozwiązania (//bez dziedziczenia klase koła dać do funkcji odwołującej się do tej samej klasy w której jest ?klasy która mogła wogole nie być jeszcze napisana?).Prosiłbym o sensowną odpowiedź lub odesłanie mnie do odpowiedniego artykułu. Jak ktoś nie ma czasu na analizowanie całego kodu to bledy gdzie je mam sa okomentowane:
//to mój main
#include "stdafx.h"
#include<iostream>
#include<Windows.h>
#include"kolo.h"
#include<iomanip>
using namespace std;
void menu()
{
cout << "Witamy w programie liczacym kola \n";
cout << "Co chcesz robic : " << endl;
cout << "1. Wprowadzanie danych okregu \n"
<< "2. Wyswietlenie informacji o okregu \n"
<< "3. Obliczanie odleglosci pomiedzy srodkami kol \n"
<< "4. Okreslanie wzajemnego polozenia kol \n"
<< "5. Wyjscie z programu" << endl;
}
int main()
{
int f;
int i = 0;
int j = 0;
int n, m;
Kolo k[10];
do
{
system("cls");
menu();
cin >> f;
switch (f)
{
case 1: //dziala
{
k[i].load();
i++;
j++;
break;
}
case 2: //dziala
{
for (int i = 0; i < j; i++)
{
k[i].wyswietl();
k[i].obw();
k[i].pole();
}
Sleep(10000);
break;
}
case 3:
{
Kolab licz(k[10]); //blad
Sleep(4000);
break;
}
case 4:
{
Kolab przecinajace(k[10]); //blad
Sleep(4000);
break;
}
case 5:
{
exit(0);
break;
}
default:
cout<<"Zle wpisana zmienna , Wpisz od nowa ";
}
} while (true);
system("PAUSE");
}
//to mój plik z klasami .h
#pragma once
#include"stdafx.h"
#include<iostream>
#include<string>
using namespace std;
class Kolo //działa wszystko w tym
{
public:
string nazwa;
float x;
float y;
float r;
public:
Kolo(string nz = "brak", int _x = 0, int _y = 0, int _r = 1);
~Kolo();
void wyswietl();
void load();
void pole();
void obw();
};
class Kolab :Kolo //a tu nie działa nic xd
{
void licz(Kolo &k[10]);
void przecinanie(Kolo &k[10]);
};
//to mój .cpp do .h
#ifndef _USE_MATH_DEFINES
#define _USE_MATH_DEFINES
#endif // !_USE_MATH_DEFINES
#include"stdafx.h"
#include<iostream>
#include<string>
#include"kolo.h"
#include<math.h>
#include<iomanip>
using namespace std;
void Kolo::load()
{
cout << "Podaj nazwe kola : ";
cin >> nazwa;
cout << "Podaj nazwe wspolrzedna X srodka okregu : ";
cin >> x;
cout << "Podaj wspolrzedna Y srodka okregu : ";
cin >> y;
cout << "Podaj promien R kola : ";
cin >> r;
cout << endl;
}
Kolo::Kolo(string nz, int _x, int _y, int _r)
{
nazwa = nz;
x = _x;
y = _y;
r = _r;
}
void Kolo::obw()
{
float licz;
cout << "Obwod podanego kola wynosi : ";
licz = 2 * M_PI*r;
cout << fixed << setprecision(4) << licz << endl;
}
void Kolo::pole()
{
float licz;
cout << "Pole wybranego kola wynosi : ";
licz = M_PI*r*r;
cout << fixed << setprecision(4) << licz << endl;
}
void Kolo::wyswietl()
{
cout << nazwa << endl;
cout << "Srodek podanego kola " << "S = (" << x << "," << y << ")" << endl;
cout << "Promien podanego kola " << r << endl;
}
void Kolab::licz(Kolo &k[10]) //blad
{
float d, e, f;
int n, m;
cout << "Ktore kola bierzemy pod uwage : ";
cin >> n;
cout << " oraz : ";
cin >> m;
e = (k[n].x - k[m].x)*(k[n].x - k[m].x);
f = (k[n].y - k[m].y)*(k[n].y - k[m].y);
d = sqrt(e + f);
}
void Kolab::przecinanie(Kolo &k[10]) //blad
{
float d, e, f;
int n, m;
cout << "Ktore kola bierzemy pod uwage : ";
cin >> n;
cout << " oraz : ";
cin >> m;
e = (k[n].x - k[m].x)*(k[n].x - k[m].x);
f = (k[n].y - k[m].y)*(k[n].y - k[m].y);
d = sqrt(e + f);
if (d == k[n].r + k[m].r)
{
cout << "Okregi sa styczne zewnetrznie " << endl;
}
else if (d > (k[n].r + k[m].r))
{
cout << "Okregi rozlaczne zewnetrznie " << endl;
}
else if (d == abs(k[n].r - k[m].r))
{
cout << "Okregi styczne wewnetrznie " << endl;
}
else if (d < (k[n].r + k[m].r) && d > abs(k[n].r - k[m].r))
{
}
else if (d < abs(k[n].r - k[m].r))
{
cout << "Okregi rozlaczne wewnetrznie " << endl;
}
else
cout << "Okregi niezidentyfikowane" << endl;
}
Kolo::~Kolo()
{
cout << "Posprzatane po obiektach";
}