Forum » Programiranje » [C++] Prekrivanje operatorja +
[C++] Prekrivanje operatorja +
velky ::
NALOGA:
Prav tako prekrijte operator + in sicer tako, da če seštejemo, dve komponenti, vsota vrne novo tabelo, ki vsebuje ti dve komponenti.
Mam razred Tabela, v katerem je vektor tipa Component*.
Omogočit moram, da mi na način, kot je napisan v 7. vrstici vrne Objekt tipa Tabela, v katerega vektor sta vstavljena A in B, to sm poizskul naredit takle:
Je sploh možno, da sta oba parametra kazalca?
Prav tako prekrijte operator + in sicer tako, da če seštejemo, dve komponenti, vsota vrne novo tabelo, ki vsebuje ti dve komponenti.
Mam razred Tabela, v katerem je vektor tipa Component*.
Component* A = new Button("Gumbek",5,5,"Besedilo",6,6); Component* B = new Label("Oznaka",10,10,"Ime:",6,6); Tabela T("Tabela"); T<<A; cout<<T.pop()->getName(); //PLUS Tabela table = A+B;
Omogočit moram, da mi na način, kot je napisan v 7. vrstici vrne Objekt tipa Tabela, v katerega vektor sta vstavljena A in B, to sm poizskul naredit takle:
friend Tabela operator+(Component* a, Component* b){ Tabela C("NovaTabela"); C.push(a); C.push(b); return C; } //Napaka: 'operator +' must have at least one formal parameter of class type
Je sploh možno, da sta oba parametra kazalca?
Randomness ::
Ne, namesto kazalcev uporabiš reference.
Tabela operator+(const Component &a, const Component &b);
Androm3da ::
alo, bi mi lahko pomagal. Kako si pa prekril operator<<, da objekt gumb doda v tabelo. Nevem kak bi napisal prekrivni operator z uporabo vektorja int main() { Tabela tabela("Tabela"); Button gumb(10,10,"OK"); Square kvadrat(10,10,15,15); tabela<<gumb; //tabeli se doda gumb tabela<<kvadrat;
Androm3da ::
vector<Button*> operator << (Button *nov) // nevem kako bi prekril operator <<, { // da bi ga dodal v tabelo lista_Button.push_back(nov); }
main:
Button *gumb1 = new Button(); gumb1->setText("gumb1"); gumb1->setHeight(2); gumb1->setWidth(5); Tabela *Tabelagumbi = new Tabela(); tabela<<gumb; //gumb dodamo v tabelo
Vesoljc ::
vector<Button*> operator << (Button *nov) // zakaj vracas vector?
hint:
MyTable t; MyElement a,b,c; t << a << b << c; // to je isto kot: t << a; t << b; t << c;
Abnormal behavior of abnormal brain makes me normal...
Androm3da ::
To da sem vračal vektor, sem tudi ugotovil na ni vredi ja.
Sem probal tako:
Sem probal tako:
Tabela operator << (Button *nov) //mi pa javi napako da mora vračati vrednost, kako bi lahko to rešil.. { lista_Button.push_back(nov); }
Vesoljc ::
vrnit hoces isto tabelo na kateri klices operator, ne neke nove kopije.
poglej tole, pod assignment operator:
http://en.cppreference.com/w/cpp/langua...
poglej tole, pod assignment operator:
http://en.cppreference.com/w/cpp/langua...
Abnormal behavior of abnormal brain makes me normal...
velky ::
Seveda ti javi napako, da mora vračati vrednost, če si 'rekel' naj vrne objekt Tabela :)
Predvidevam, da si na feri in delaš isto nalogo kot sm jo js :)
Ti moreš dosečt, da z tem operatorjem v vektor v razredu Tabela vnašaš izpeljane razrede Tabele, torej button,label... To prav misliš, ampak boš mogu malo popravit.
1. Poglej si nekaj osnovnih primerov o prekrivanju tega operatorja, da ti bojo jasni kak parametre postavit in malo testiraj.
2. Smisel te funckije, ni da nekaj vrne, ampak da zgolj dodaš element v vektor.
3. Kot parameter ne moreš met Button*, ker imaš tudi label,textbox.. in ti nebo šlo skoz pri zagovoru, razen če boš za vsakega posebej prekrival, kar pa ni smiselno. Torej boš moral zadevo posplošit.
Če ti res nebo šlo ti lahko pošljem rešitev, ampak pol neboš mel nič od tega :)
Predvidevam, da si na feri in delaš isto nalogo kot sm jo js :)
Ti moreš dosečt, da z tem operatorjem v vektor v razredu Tabela vnašaš izpeljane razrede Tabele, torej button,label... To prav misliš, ampak boš mogu malo popravit.
1. Poglej si nekaj osnovnih primerov o prekrivanju tega operatorja, da ti bojo jasni kak parametre postavit in malo testiraj.
2. Smisel te funckije, ni da nekaj vrne, ampak da zgolj dodaš element v vektor.
3. Kot parameter ne moreš met Button*, ker imaš tudi label,textbox.. in ti nebo šlo skoz pri zagovoru, razen če boš za vsakega posebej prekrival, kar pa ni smiselno. Torej boš moral zadevo posplošit.
Če ti res nebo šlo ti lahko pošljem rešitev, ampak pol neboš mel nič od tega :)
Zgodovina sprememb…
- spremenil: velky ()
Androm3da ::
Okej razumem, hvala za nasvet.
Kaj bi mi lahko mogoče posredoval nalogo na mail(dakine_5@hotmail.com), ker se zdej že tako dolgo stem
hecam pa zgleda da nepridem do rešitve. Tak da če bi mi lahko posredoval nalogo bi bil res hvaležen.
Kaj bi mi lahko mogoče posredoval nalogo na mail(dakine_5@hotmail.com), ker se zdej že tako dolgo stem
hecam pa zgleda da nepridem do rešitve. Tak da če bi mi lahko posredoval nalogo bi bil res hvaležen.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | sqlOddelek: Programiranje | 1035 (740) | Miha 333 |
» | SQL query za datume, ki se ne prekrivajoOddelek: Programiranje | 2639 (2270) | omnimint |
» | [SQL] - združitev glede na iste vrednostiOddelek: Programiranje | 1421 (1063) | tx-z |
» | [mySQL] razvrščanje v primeru enakih vrednostiOddelek: Programiranje | 812 (687) | crystal |
» | MYSQL vprašanjeOddelek: Programiranje | 1814 (1429) | MrBrdo |