» »

[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*.

	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);

velky ::

Sem zrihtal, hvala :)

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:
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...
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 :)

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.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

sql

Oddelek: Programiranje
61035 (740) Miha 333
»

SQL query za datume, ki se ne prekrivajo

Oddelek: Programiranje
212639 (2270) omnimint
»

[SQL] - združitev glede na iste vrednosti

Oddelek: Programiranje
131421 (1063) tx-z
»

[mySQL] razvrščanje v primeru enakih vrednosti

Oddelek: Programiranje
7812 (687) crystal
»

MYSQL vprašanje

Oddelek: Programiranje
131814 (1429) MrBrdo

Več podobnih tem