Hogyan javítsuk ki a „Nincs alapértelmezett konstruktor” hibát a C++-ban
Az „eltérés” ebben az összefüggésben azt jelenti, hogy a kód elvárt viselkedése megváltozott, és már nem követi a várt mintát. Más szavakkal, a kód eltért a tervezett útvonaltól. A problémát az okozza, hogy az `std::vector'-nak nincs alapértelmezett konstruktora, ezért amikor megpróbálja létrehozni a `MyVector egy példányát ` argumentumok megadása nélkül a fordító nem tudja felépíteni az objektumot.
A probléma megoldásához hozzáadhat egy alapértelmezett konstruktort a `MyVector' osztályához, amely inicializálja a vektort egy üres listával:
```
class MyVector {
std::vector
public:
MyVector() : myVector{} {} // alapértelmezett konstruktor
// ... egyéb metódusok ...
};
```
Ez lehetővé teszi példányok létrehozását `MyVector`-ból argumentumok nélkül, és az objektum megfelelően lesz megszerkesztve.
Alternatív megoldásként hozzáadhat olyan konstruktort is, amely nem vesz fel argumentumokat, és üres listával inicializálja a vektort:
```
class MyVector {
std::vector< int> myVector;
public:
MyVector(const std::vector
MyVector() : myVector({}) {} // alapértelmezett konstruktor
// ... egyéb módszerek ...
};
```
Ez azt is lehetővé teszi, hogy argumentumok nélkül hozza létre a `MyVector` példányait, és az objektum megfelelően lesz felépítve.