[c++] g++ tror att jag skapar ett object trotts att jag icke gör det.

Permalänk
Medlem

[c++] g++ tror att jag skapar ett object trotts att jag icke gör det.

hej har ett mysterium som jag hoppas att ni kan hjälpa mig med, jag dar typedef:at en struct och on enum i en klass:

class object{ public: typedef std::vector<object*> objectVector; typedef enum{ENEMY, FRIENDLY} classification; typedef struct movementvector{int x; int y;} movementVector; /* snipp */ object(int Damage, int HitPoints, object::movementVector moveVec,\ object::classification Classification); ~object(); /* snipp */ }

deklarerar en under klass:

objectPlayer::objectPlayer(int Damage, int HitPoints,\ object::movementVector moveVec, object::classification Classification){ /* snipp */ }

men är jag kompilerar så får jag:

src/objectPlayer.cpp: I konstruerare "objectPlayer::objectPlayer(int, int, object::movementVector, object::classification)": src/objectPlayer.cpp:18:78: fel: ingen matchande funktion för anrop av "object::object()" src/objectPlayer.cpp:18:78: anm: kandidater är: src/object.h:21:5: anm: object::object(int, int, object::movementVector, object::classification) src/object.h:21:5: anm: kandidaten förväntade sig 4 argument, 0 fanns src/object.h:10:7: anm: object::object(const object&) src/object.h:10:7: anm: kandidaten förväntade sig 1 argument, 0 fanns make: *** [obj/objectPlayer.o] Fel 1

varför tror g++ att jag försöker att skapa ett object objekt?
och hur fixar jag det?

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

Problemet är att det inte finns en default constructor för object. Antingen så skapar du en default constructor i object klassen och gör all initiering i den ärvda klassen, eller så måste du göra ett explicit anrop till den överlagrade object constructorn.

objectPlayer::objectPlayer(int Damage, int HitPoints, object::movementVector moveVec, object::classification Classification) : object(Damage, HitPoints, moveVec, Classification)

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Medlem

Den klagar för att du inte har en basic konstuctor i din object klass, och eftersom du inte specifierar vilken kontructor playerobject ska kalla på försöker den kalla på basic kontruktorn som inte finns. Skapa en enkel konstruktor till object som inte tar några argument eller kalla på den du har i playerobjects kontruktor.

Permalänk
Medlem

Tack för ett snabt svar, dock är jag lite förvirrad varför jag måste gör så, har skapat klasser förr som inte behöver detta och de har fungerar bra... ända tills jag lade till movmentVector och classification

i object.cpp finns en konstruktor för object.:

object::object(int Damage, int HitPoints,object::movementVector moveVec,\ object::classification Classification){ // Setting if the object is an enemy (EI: hurts the player) or a friendly. mClassification = Classification; //Set the hitPoints... mHP = HitPoints; // set damage mDamage = Damage; // Set the vector of movment. mMovmentVector = moveVec; // Example: set an objects mX to a random number, and mY to be -25. mX = game::getRandom(640); mY = -25; }

Besynnerligt.

men iallafall det som du postade fungerade i alla fall...

tack ännu en gång....

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix