C++ -ban hogyan lehet olyan függvényt írni, ami több pl.4 változónak ad vissza értéket, viszont a függvény hívásakor nem kötelező megadni minden paramétert?
Pl.
Van ez a függvény:
int fuggveny (int &a,int b, string c, int& d, int& e, bool& f)
Én pedig így szeretném hívni:
fuggveny (x,y);
függvény (x,y,z,e);
Tehát ne legyen kötelező megadni minden elemet...
Előre is köszönöm a segítséget!
Én alapvetően két utat látok, de majd egy pro C++-os kijavít:
1. default paraméter:
int fuggveny (int &a=NULL, int &b=NULL) {
if (a!=NULL) { // ellenőrzöd, hogy valós-e a cím
// értéket adsz neki...
}
//...
}
2. overload (előnye, hogy nem kell az implementációnál mindig ellenőrizni, hogy valós-e a cím):
int fuggveny (int &a) {
int garbage=0;
return fuggveny(a, &garbage);
}
int fuggveny(int &a, int &b) {
//marad az implementáció
}
A NULL egy pointer, jobb esetben is int, úgyhogy az el fog szállni. Esetleg const referenciával lehet megoldani, de én ezt se tartom jó ötletnek.
Az overload sokkal jobb megoldás, kézenfekvő is.
(bár nagyon kíváncsi lennék, mire kell ez..)
Köszönöm az eddigi válaszokat!
Gyakorlásból, hobbiból programozom és érdekel minden apró részlet.
Pontosabban egy multifunkciós függvényhez kellett volna a dolog, amely feltételek alapján kérdez le adatokat a saját adatbázisból (vektor+class a memóriában).
Ebben a programban ki lehet választani, hogy mely feltétlek alapján szeretnénk lekérdezni infókat (pl. azonosító, név stb..).
Miután a felhasználó megadta a feltételeket, a program bekéri a szűréshez kiválasztott adatokat és megjeleníti az adatbázisból a lekérdezésnek megfelelő információt.
Úgy szerettem volna megoldani a programot, hogy egy függvény végezzen el minden lekérdezést, de ne legyen nagyon zavaros.
Igyekszem úgy programozni, hogy könnyen fejleszthető és átlátható legyen a kód. Meg akartam valósítani, hogy a függvényt úgy is meg lehessen hívni, hogy előre megadott adatokkal (amit nem a felhaszánlótól kérünk be, hanem később bármi más esetben).
Ekkor nem az a cél, hogy a képernyőre jelenítsük meg az adatokat, hanem a függvény visszadna például egy vektoros struktúrát a kívánt adatokkal vagy még nem gondoltam ki pontosan.
Meg lehetne oldani több függvénnyel is, de ennek ellenére érdekel minden ötlet:)
Ezt a hibát kaptam:
|116|error: too few arguments to function ....
De az első válaszból is merítettem egy kis ötletet, amit ki fogok próbálni.
Az overload alatt mit kell értenem? Tudom, hogy vannak a túlterhelt konstruktorok, de biztos nem erre gondoltál csak hasonló elvre, vagy erre?
#2: teljesen igazad van, nem is tudom, hogy tudtam összekeverni a referencia szintaxisát a pointerével.
Kérdező: C++-ban nem csak konstruktort, függvényeket is tudsz túlterhelni.
A dolgot még bonyolíthatja, hogy ez a függvény nem a classhez tartozik.
Tudom, hogy úgy egyszerűbb volna, ha az adatokat nem a függvény kérne be.
De most úgy van megírva a függvény, hogy ha az adott szűrési feltétel/paraméter true-ra van állítva (true értékkel van meghívva a függvény), akkor bekéri az adatot.
Ha minden feltétel false, akkor megnézi, hogy jött-e paramtérként adat pl. név vagy azonosító. Ha igen, akkor pedig elvégzi a függvény a műveleteket és az adatokat visszadja.
Tényleg érdekelnek még ötletek, ha vannak:)
De lehet most már inkább azt fogom csinálni, hogy egy struktúrát adok csak át a függvénynek és majd azt machinálom meg :D
'Általános szabály az, hogy egy függvény maximum 2, nagyon extrém esetben 3 paraméterrel rendelkezzen.'
Ezt hol tanították ?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!