|
Titlul: help ... Scris de: Puni Andrei Paul din Aprilie 01, 2009, 16:03:41 vreau sa definesc operatorul ++ pe o structura
in mod normal am struct Nod { int a; Nod *x; }; si parcurg o lista de adiacenta asa for (Nod *it=l[nod];it;it=it->x) si as vrea sa pot defini operatorul ++ ca sa pot face asta for (Nod *it=l[nod];it;++it) sau for (Nod *it=l[nod];it;it++) ar arata mai bine sursele :) Titlul: Răspuns: help ... Scris de: alexandru din Aprilie 01, 2009, 19:12:07 Cred ca poti daca declari o functie de tip operator, te folosesti de supraincarcarea operatorilor :D
Titlul: Răspuns: help ... Scris de: Andrei Misarca din Aprilie 01, 2009, 19:15:10 poti face ceva de genu
Cod: #define ++it it = it -> x Titlul: Răspuns: help ... Scris de: Stefan-Alexandru Filip din Aprilie 01, 2009, 20:14:46 Nu cred ca ai cum sa definesti operatorul ++ cum vrei tu.
Nu poti sa supraincarci operatorul ++ pentru ca tu faci operatia pe un pointer, iar din cate stiu pointerii nu sunt tipuri de date. Daca faci cum a spus Andrei dezavantajul este ca nu vei mai putea folosi operatorul ++ decat cu pointeri, si nu il vei mai putea folosi pentru intregi, spre exemplu. Cod: #define ++it it = it -> x Pentru a permite o astfel de scrieri, in structurile de date din STL se folosesc iteratorii, dar acestia sunt niste clase mai speciale definite in interiorul clasei parinte. Titlul: Răspuns: help ... Scris de: alexandru din Aprilie 01, 2009, 20:27:42 Prin supraincarcarea operatorului, poti face:
Cod: #include<stdio.h> Titlul: Răspuns: help ... Scris de: Andrei Grigorean din Aprilie 01, 2009, 23:32:05 Pentru a permite o astfel de scrieri, in structurile de date din STL se folosesc iteratorii, dar acestia sunt niste clase mai speciale definite in interiorul clasei parinte. Aceasta este si recomadarea mea, sa folosesti iteratori. Te poti uita peste implementarile din STL ;) |