Mam zrobic cos takiego:
Napisz klasę Gitara do przechowywania
informacji o gitarach
• Napisz klasę Magazyn, która wewnętrznie
będzie przechowywać tablicę Gitar
• Przeciąż operatory „+” i „-” tak aby za pomocą
tych operatorów było można dodawać i
usuwać Gitary z Magazynu
• Do definicji co najmniej jednego operatora
wykorzystaj słowo kluczowe friend
Otoz, chcialem zrobic vector gitar w magazynie. Co sie dzieje:
- dodawanie funkcją add dziala, nie dziala operator +. Tzn program sie wywala po wywolaniu mag2+b; Jak sobie zawartosc wektora wyswietle w "Magazyn Magazyn::operator +" to mi wyswietli, ze dodal obiekt, tylko pozniej program przestaje odpowiadac.
- jak chce zrobic dziedziczenie w klasie magazyn po klasie gitar czyli "class Magazyn:public Gitara{" to: main.cpp|31|error: no matching function for call to 'Gitara::Gitara()'|
#include <fstream>
#include <string>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
class Gitara{
protected:
string NazwaGit;
public:
Gitara(string _name): NazwaGit(_name) {};
void ustaw_wartosci(string name)
{
NazwaGit = name;
}
void infogitara()
{
cout << NazwaGit << " Gitara" << endl;
}
};
class Magazyn{
protected:
//string NazwaMag;
vector <Gitara> Tablica;
public:
Magazyn operator+ (Gitara Name);
void info()
{
for (int y=0; y<Tablica.size(); y++){
Tablica[y].infogitara();
}
}
void add(Gitara Name){
Tablica.push_back(Name);
}
};
Magazyn Magazyn::operator + (Gitara Name){
Tablica.push_back(Name);
}
int main()
{
string Nazwa;
cin >> Nazwa;
Magazyn mag2;
Gitara b = *new Gitara(Nazwa);
b.infogitara();
mag2+b;
mag2.info();
return 0;
}