Konstruktor, hogyan lehetne megvalósítani? (Nagyon egyszerű, de nem értem)
Egy main-ben lévő kódhoz kell kiegészítő függvényeket/structokat írni, hogy lefusson.
Ez van a main-ben:
Ember e1;
ellenoriz(e1.nev == "Lajos", pont);
Ember e2("Alajos");
ellenoriz(e2.nev == "Alajos", pont);
Amit csináltam hozzá:
struct Ember{
string nev="Lajos";
Ember(string n)
{nev=n;}}
De ezzel nem működik... hogy kéne megcsinálni?
Amikor deklarálod az "e1" változót a fordító egyértelmű hibaüzenetet ad:
xyz.cpp: In function ‘int main()’:
xyz.cpp:**:*: error: no matching function for call to ‘Ember::Ember()’
Ember e1;
Tehát hiányzik egy olyan konstruktor metódus, ahol nincs bemeneti paraméter.
Szóval valahogy így alakítanám át:
Alapvetően a fordító automatikusan generál minden osztályhoz/adatszerkezethez default konstruktort, azaz olyat, ami 0 paramétert vár. Viszont ez csak akkor igaz, ha nincs explicit módon megadva konstruktor. Onnantól, hogy te kézzel megadsz egy vagy több konstruktort a struktúrádhoz, onnantól azok lesznek az egyedüli konstruktorok.
Namost, amikor te leírod, hogy
Ember e1;
Akkor valójában meghívódik az Ember osztály default konstruktora. Illetve meghívódna, de nincs neki, mivel te nem adtál meg default konstruktort, a fordító pedig nem generált hozzá. Fontos, hogy hacsak nem akarod explicit módon tiltani egy osztály esetében a default konstruktort, akkor figyelj oda, hogy vagy legyen kézzel megadva hozzá, vagy egyáltalán ne legyen kézzel megadott konstruktor.
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!