16. december 2002 - 16:44
Der er
13 kommentarer og 1 løsning
Pointers
er ved at gå ud af mit gode skin over pointers.... :( std::list<Person*> object; std::list<Person*>::iterator constIterator; object.push_back(hero); object.push_back(Monster1); object.push_back(Monster2); object.push_back(Monster3); object.push_back(Monster4); for( constIterator = object->begin(); constIterator != object-> end(); constIterator++) constIterator.move(); fejl: Base operand of '->' has non-pointer type ' std::list<Person*, std::allocator<Person*> >' no matching funtion for call to std::_List_iterator<Person*, Person*&, Person**>::move()' har en funktion som hedder move håber der er nogen der kan hjælpe mig
Annonceindlæg fra Infor
16. december 2002 - 16:48
#1
Du har ikke oprettet en pointer. Du skal bruge: for( constIterator = object.begin(); constIterator != object.end(); constIterator++) { .. }
16. december 2002 - 17:03
#2
oki.... :) men hvad så med den sidste fejl... den med no matching......?
16. december 2002 - 17:16
#3
heh, jeg har ikke lige testet men jeg formoder det må være: constIterator->move();
16. december 2002 - 17:19
#4
det må det gerne være.... ved ikk hvad fejlen er for jeg har en en funktion der hedder move i Class Person som er virtuel og så har jeg en funktion i Class player som hedder move også .. og det er den som skal bruges... men den siger at den ikk findes.. :((
16. december 2002 - 17:27
#5
Person *Princess = new Npc ( 3 , 100 , 100, 17+15 , 17+3 , 150, map, NULL); Person *hero = new Player ( 2 , 100 , 100, 1+15 , 2+3 , map, Princess); Person *Monster1 = new Npc ( 4 , 100 , 100, 3+15 , 31+3 , 200, map, hero); Person *Monster2 = new Npc ( 5 , 100 , 100, 3+15 , 3+3 , 200, map, hero); Person *Monster3 = new Npc ( 6 , 100 , 100, 31+15 , 3+3 , 200, map, hero); Person *Monster4 = new Npc ( 7 , 100 , 100, 31+15 , 31+3 , 200, map, hero);
16. december 2002 - 18:17
#6
Har du lidt kode til Person klassen (specielt omkring move metoden) ?
16. december 2002 - 18:30
#7
Du gmmer en pointer til et Person objekt i din liste. Iteratoren returnere en pointer til objektet som der gennemløbes. Derfor er constIterator en pointer til en pointer til et Person objekt. Ergo må det være: *constiterator->move();
16. december 2002 - 18:42
#8
det er intet kode i Move() i Class person..... koden er i min player klasse og i min npc klasse..... og *constiterator->move(); hjalp ikk så meget :( stadig samme fejl no matching funtion for call to std::_List_iterator<Person*, Person*&, Person**>::move()'
16. december 2002 - 19:10
#9
Ok, så holder jeg op med at gætte :-) Jeg har lavet et eksempel som virker: ---------------KlasseA.h #ifndef KLASSE_A #define KLASSE_A #include <stdio.h> class KlasseA { public: KlasseA(); ~KlasseA(); void move(); }; KlasseA::KlasseA() {} KlasseA::~KlasseA() {} void KlasseA::move() { printf("Hello world fra KlasseA::move()\n"); } #endif ---------------main.cpp #include <iostream> #include <list> #include "KlasseA.h" using namespace std; int main(int argc, char **argv) { KlasseA *obj1 = new KlasseA(); KlasseA *obj2 = new KlasseA(); KlasseA *obj3 = new KlasseA(); KlasseA *obj4 = new KlasseA(); list<KlasseA*> object; list<KlasseA*>::iterator iter; object.push_back(obj1); object.push_back(obj2); object.push_back(obj3); object.push_back(obj4); for(iter = object.begin();iter != object.end(); iter++) { KlasseA *temp = *iter; temp->move(); } delete obj1; delete obj2; delete obj3; delete obj4; return 0; } Derfor må du kunne bruge: for( constIterator = object.begin(); constIterator != object.end(); constIterator++) { Person *temp = *constIterator; temp->move(); }
16. december 2002 - 19:20
#10
tusind mange tak... nu kan jeg endelig komme videre :))))))
16. december 2002 - 21:45
#11
håber at du vil hjælpe mig med det her også std::list<Person*> objMonster; std::list<Person*>::iterator constIterator2; objMonster.push_back(Monster1); objMonster.push_back(Monster2); objMonster.push_back(Monster3); objMonster.push_back(Monster4); for( constIterator2 = objMonster.begin(); constIterator2 != objMonster.end(); constIterator2++){ Person *temp = *constIterator2; hero->check_for_monster(temp); } fejl.. no matching function for call person::check_for_monster(Person&)
16. december 2002 - 21:46
#12
check for_monster returnere en værdi....
16. december 2002 - 21:47
#13
check for monster lægger i Class player
17. december 2002 - 10:16
#14
Player, Npc er subklasser af Person ? Hvordan ser definitionen af: person::check_for_monster ud ?
Kurser inden for grundlæggende programmering