#include <iostream>
#include <string.h>
/////////////////////////////zwykla klasa///////////////////////////////
using namespace std;
class osoba
{
char nazwisko[30];
public:
//dorobic konstruktor kopiujacy
osoba(char * n = NULL)
{
strcpy(nazwisko, n);
}
friend ostream& operator <<(ostream& s, const osoba& o);
friend ostream& operator <<(ostream& s, const osoba* wsk);
};
/////////////////////////////////////////////////////////////////////////
ostream& operator <<(ostream &s, const osoba &o)
{
s<<o.nazwisko;
return s;
}
ostream& operator <<(ostream &s, const osoba *wsk)
{
s<<wsk->nazwisko;
return s;
}
const int pojemnosc_wektora = 15;
/////////////////////////////////////klasa pojemnikowa/////////////////////////////////////
class wektor
{
osoba tabl[pojemnosc_wektora];
int ile_obiektow;
public:
wektor():ile_obiektow(0)
{
cout<<"Jestem konstruktor:";
}
int wstaw(const osoba &nowy, int gdzie = -1);
void usun(int nr);
osoba & co_na(int pozycja){return tabl[pozycja];}
friend ostream &operator<<(ostream &stru, wektor &x);
private:
void rozsun(int pozycja);
void zsun(int nr);
};
//koniec definicji klasy
ostream &operator<<(ostream &stru, wektor &spis)
{
stru<<" ";
for(int i = 0; i < spis.ile_obiektow ; i++)
{
stru<< i << ") "<<spis.tabl[i]<<" \n";
}
return stru;
}
void wektor::rozsun(int pozycja)
{
for(int i = ile_obiektow; i > pozycja; --i)
{
tabl[i] = tabl[i - 1];
}
}
void wektor::zsun(int nr)
{
for(int i = nr; i < ile_obiektow; ++i)
{
tabl[i] = tabl[i + 1];
}
}
int wektor::wstaw(const osoba& nowy, int gdzie)
{
if(ile_obiektow == pojemnosc_wektora)
{
std::cout<<"\nWektor juz zapelniony !\n";
return 0;
}
if(gdzie < 0 || gdzie > ile_obiektow)
{
gdzie = ile_obiektow;
}
rozsun(gdzie);
tabl[gdzie] = nowy;
ile_obiektow++;
return 1;
}
void wektor::usun(int nr)
{
if(nr < ile_obiektow)
{
zsun(nr);
ile_obiektow--;
}
}
int main()
{
osoba wloch("Vivaldi"), niemiec("Bethoven"), austriak("Mozart"), polak("Chopin");
std::cout<<"Przedstawia sie "<<wloch<<"\n";
osoba* kapelmistrz = &austriak;
std::cout<<"Kapelmistrzem jest dzis "<<*kapelmistrz<<"\n";
wektor muzycy;
std::cout<<"sizeof(muzycy) = "<<sizeof(muzycy)<<"\n";
muzycy.wstaw(niemiec);
muzycy.wstaw(wloch);
std::cout<<muzycy<<"\n";
muzycy.wstaw(polak, 1);
std::cout<<" Po wpisie na pozycji 1\n"<<muzycy<<"\n";
muzycy.wstaw(austriak, 2);
std::cout<<" Po wpisie na pozycji 2\n"<<muzycy<<"\n";
muzycy.usun(1);
std::cout<<" Po usunieciu z pozycji 1\n"<<muzycy<<"\n";
std::cout<<"co jest na pozycji pierwszej? "<<muzycy.co_na(1)<<"\n";
wektor fizycy;
osoba f1("Einstein");
osoba f2("Bohr");
fizycy.wstaw(f1);
fizycy.wstaw(f2);
std::cout<<"zawartosc w spisu fizykow:\n"<<fizycy;
return 0;
}
Program wywala przy wywolaniu konstruktora klasy wektor, co jest nie tak?
screen:
http://ifotos.pl/zobacz/kraszjpg_naaxrxn.jpg
http://s4.ifotos.pl/mini/kraszjpg_naaxrxn.jpg
poprawienie linku - fp