Hogy orvosolható ez a class művelet c++ban?
Van egy Character ősosztályom. Mivel minden karakternek meghatározott spelljei vanna és a spellnek vannak azonos tulajdonságaik, metódusaik ezért a spellnek is csináltam egy osztályt.
Ezt a spellt akarom beletenni a Charakter-be.
class Character
{
.....
Spell spell1;
Spell spell2;
.....
}
A gondom az hogy, mivel minden karakter spelljei más más nevűek, ezért a spell osztályon belül van egy string spellName, ezt a Spell konstruktora alapból spellName = ""; -re állítaná be és egy másik konstruktor bemeneti paraméterként kapnámeg a nevet az egyes karaktereken belül.
Tehát addig jutottam, hogy:
Spell::Spell()
{
spellName = "";
}
Spell::Spell(string sp)
{
spellName = sp;
}
Viszont a Character::Character()
{
.....
}
Ide hibát jelez "No matching function for call Spell::Spell", amit ebben az esetben nem tudok értelmezni.
Character::Character() ide jelzi a hibát.
Ez általában akkor szokott előjönni, ha valmi nem stimmel a paraméterekkel, ha jól tudom.
Csak enmtudom, hogy mi.
Ugye nem a Character osztályba írtad a következőt:
Spell::Spell()
{
spellName = "";
}
Hát ez alapján nemigen lehet semmit mondani, egy wild guess: headerek be vannak include-olva megfelelően?
A Spell osztályleírásában fel van véve a default és a paraméterezett konstruktor is?
3-as válaszoló: Nem ez a spellcpp-ben van.
4-es válaszoló: Az első kéréds igaz, teht minden bevan iclude-olva.
A második kérdés nem igaz. Nem tudtam, hogy oda-vissza szükséges a dolog.
"No matching function for call Spell::Spell"
Ez elvileg azt jelenti, hogy mikor létre akarja hozni a spell objektumot, nem talál hozzá paraméter nélküli konstruktort. Ellenőrizd, hogy a headerben is ott van-e a Spell::Spell() konstruktor.
" Spell::Spell() konstruktor "
Na bocs, szóval a "Spell();" deklaráció.
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!