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 DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
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