AttackArbiter.cpp gerade aktiverites CsPet bekommen

02/15/2013 20:00 ThoughtfulDev#1
ich bekomme immer diesen error
Code:
e:\FLYFF\V19\Source-UPDATE-2\Source\Virtuos_v17\Build\Program\WORLDSERVER\AttackArbiter.cpp(830): error C2440: '=' : cannot convert from 'CPet *' to 'CItemElem *'
ich habe es so versucht:
Code:
pItemElem = pItemElem->m_pPet;
genaueres: es ist für das Pet Level System.....wer mehr code braucht soll nur fragen ;) ich verzweifel echt daran habe schon alles versucht von GetPet() bis hinzu allem möglichem halt....
02/15/2013 20:10 Mognakor#2
Weiß das ganze doch auf eine neue Variable CPet* petElem zu.

Nur mal so, hab jetz die Klassen ja nicht auswendig im Kopf, aber wieso weißt du einer Klasse einen Wert zu der in ihr enthalten ist, wirkt etwas verwirrend auf mich.
02/15/2013 20:21 yannick2008#3
pItemElem = pItemElem->m_pPet;

Was solln das lol...


Pscht hab gehört vc++ verratet dir die fehler.. aber pscht!!!

cannot convert from 'CPet *' to 'CItemElem *'
02/15/2013 20:22 Мentus#4
m_pPet ist ein Member der Klasse CItemElem, welche jedoch eine Variable bzw Zeiger der Klasse CPet. Du kannst nicht einfach von der einen Klassen zur anderen casten, konvertieren o.ä.
02/15/2013 21:22 yannick2008#5
Quote:
Originally Posted by Мentus View Post
m_pPet ist ein Member der Klasse CItemElem, welche jedoch eine Variable bzw Zeiger der Klasse CPet. Du kannst nicht einfach von der einen Klassen zur anderen casten, konvertieren o.ä.
Natürlich kann man das.

CMover* pMover = pUser;

Zack wir haben es gecastet.

m_pPet ist eine variable in der der Pointer zu der Klasse CPet ist und der ThreadStarter versucht die klasse CPet zu CItemElem zu casten.


Was gruseliger ist:
Er versucht eine Variable/Klasse von pItemElem in pItemElem zu packen?! Das ist doch idiotisch lol.
02/15/2013 22:31 Unleashed!#6
^true

@TE: Wie wärs mit einer neuen Variable like "CPet* pPet = pItemElem->m_pPet;" oder einfach pItemElem->m_pPet benutzen?
02/15/2013 23:56 Мentus#7
Quote:
Originally Posted by yannick2008 View Post
Natürlich kann man das.

CMover* pMover = pUser;
Zack wir haben es gecastet.

m_pPet ist eine variable in der der Pointer zu der Klasse CPet ist und der ThreadStarter versucht die klasse CPet zu CItemElem zu casten.


Was gruseliger ist:
Er versucht eine Variable/Klasse von pItemElem in pItemElem zu packen?! Das ist doch idiotisch lol.
Geht nur weil CUser Zugriff auf CMover hat. Mal davon abgesehen würde das auch ein Warning/Error auslösen.

Deswegen sagte ich extra "man kann nicht einfach casten/konvertieren" deswegen wäre dort folgende Syntax richtig:

CMover* pMover = (CMover*)pUser;
oder
CMover* pMover = static_cast< CMover* >( pUser );
Gibt noch viele andere Methoden.
Was eigentlich total sinnlos ist da CUser wie oben bereits erwähnt Zugriff auf CMover hat.

BTW: CPet ist das Stat Pet.
02/16/2013 07:12 ThoughtfulDev#8
danke leute versuche ich es so
Code:
CPet* pPet = pItemElem->m_pPet;
gibt es hierbei ein error
Code:
m_pAttacker->ResetDestParamEquip(pItemElem->GetProp(), pPet);
e:\FLYFF\V19\Source-UPDATE-2\Source\Virtuos_v17\Build\Program\WORLDSERVER\Att ackArbiter.cpp(856): error C2664: 'CMover::ResetDestParamEquip' : cannot convert parameter 2 from 'CPet *' to 'CItemElem *'
02/16/2013 09:58 Andrej-Delany#9
Quote:
Originally Posted by Shonenx33 View Post
danke leute versuche ich es so
Code:
CPet* pPet = pItemElem->m_pPet;
gibt es hierbei ein error
Code:
m_pAttacker->ResetDestParamEquip(pItemElem->GetProp(), pPet);
e:\FLYFF\V19\Source-UPDATE-2\Source\Virtuos_v17\Build\Program\WORLDSERVER\Att ackArbiter.cpp(856): error C2664: 'CMover::ResetDestParamEquip' : cannot convert parameter 2 from 'CPet *' to 'CItemElem *'
Schau dir doch an was du machst^^
Code:
void CMover::ResetDestParamEquip( ItemProp* pItemProp, CItemElem* pItemElem )
Der Zeite parameter ist folgender:
CItemElem* pItemElem
und du packst da folgendes rein:
CPet* pPet

Verstanden?
02/16/2013 14:05 Mognakor#10
Ist Englisch denn so eine schwere Sprache, dass man nichtmal die offensichtlichsten Erklärungen versteht?