Just nu i M3-nätverket
Gå till innehåll

Onp

Medlem
  • Antal inlägg

    44
  • Gick med

  • Senaste besök

    Aldrig

Allt postat av Onp

  1. Ursäkta min lathet... http://www.cprogramming.com/tutorial/lesson10.html [inlägget ändrat 2004-07-22 23:44:23 av Onp]
  2. Okej, nice. Ska kolla upp det. Tack för hjälpen.
  3. Men om jag ska göra en typomvandling så måste jag ju veta vilken typ objektet är, och det är ju inte alltid jag vet det. T.ex. World* world; Item* item; // returnerar en Itempekare som pekar på ett Weapon-objekt item = world->GetItem("knife");
  4. Lär dig C++ på 3 veckor. Dag 12 - Arv. Sida 391: "Man kan inte komma härifrån till dit" Men jag hittar en det han refererar till :/ Det är ju exakt detta jag är ute efter.
  5. Hur ska man annars hålla reda på vilka objekt som finns i världen? Det går ju inte ha olika typer i en vektor, eller?
  6. Alltså, ni har nog missuppfattat lite. Syskonen ska inte anropa varandra. Håller på med ett äventyrsspel där jag har en klass, Item, som är basklass åt Weapon, Car, etc. Dessa härledda klasser har metoder som Shoot() och Drive(). Alltså olika metoder för hur spelaren kan interagera med dem. I min huvudklass, World (som är basklass åt alla klasser), har jag en std::vector med Item-pekare. Elementen i vektorn kan alltså innehålla härledda klasser. Problemet är alltså hur jag ska kunna anropa Weapon's och Car's metoder utifrån denna vektor med Item-pekare. Man vill ju inte gärna ha en massa virtuella metoder i klassen World, eftersom det ska vara enkelt att lägga till nya objekt.
  7. Har följande klasser: [log]class Vehicle { /* ... */ }; class Car : public Vehicle { public: void SetNumWheels(int); private: int mNumWheels; }; class Boat: public Vehicle { public: void SetNumEngines(int); private: int mNumEngines; };[/log] SetNumWheels() och SetNumEngines() är bara exempel för att illustrera metoder som är unika för respektive klass. Okej. Om jag nu gör följande: Vehicle* A = new Car; Vehicle* B = new Boat; Hur anropar jag SetNumWheels() från A? eller SetNumEngines() från B? Jag är medveten om att det går typomvandla, eller att jag skaffar en Car-pekare eller en Boat-pekare. Men jag måste på nåt sätt komma åt dessa metoder från en Vehicle-pekare. Hur löser man detta på en snyggt sätt? [inlägget ändrat 2004-07-07 21:44:14 av Onp]
  8. Hehe. Har kanske gett mig in på lite för komplicerade områden... men hur ska man annars lösa det? I spelet kan man ju skriva in olika saker, typ "take the knife", "talk to john", etc... Det som händer då är ju att den ska använda metoderna Take() och Talk() från en klass. Men Take() tar ju en Item* som parameter, och Talk() tar ju en Actor* som parameter.. Några alternativ? [inlägget ändrat 2004-07-06 16:49:10 av Onp]
  9. Tackar! Det var just (w.*itr->second)(); som var det knepigaste. Förstår inte riktigt logiken i den syntaxen, men men. Det funkar. Nu till nästa fråga =) Hur gör man om metoderna har olika parametrar? class World { public: void examine(Item* item) { item->SomeMethod(); } void open(Door* door) { door->SomeOtherMethod(); } }; Jag antar att templates har något med det här och göra. [inlägget ändrat 2004-07-05 18:46:33 av Onp]
  10. Hm. Jag måste nog använda mig av iterators eftersom jag inte vet namnet på metoden som ska anropas. Sen min fråga var nog egentligen hur syntaxen ser ut för metodpekare kontra funktionspekare. Gärna ett exempel där metodpekaren ingår i en std::map...
  11. Håller på för fullt med att lära mig C++ och har nu kommit till metodpekare. Håller på med ett litet textbaserat äventyrsspel där jag hade tänkt att när man skriver t.ex. "examine the book" så ska den leta upp metoden "examine" från en lista och exekvera den. Har kommit så här långt: map<string, void (World::*)(Player*, Item*)> functions; map<string, void (World::*)(Player*, Item*)>::iterator fiter; functions["examine"] = &World::Examine; Om det vore en vanlig funktionspekare skulle jag ju exekvera så här: fiter = functions.find("examine"); fiter->second(player, item); Men hur gör man med metodpekare? [inlägget ändrat 2004-07-03 18:31:55 av Onp]
  12. Ser lite ljusare ut nu... =) Nybörjarböckerna tar inte upp såna här grejer. Jag studerade hans kod i boken och märkte att han stoppade in en vektor som funktionsparameter när parametern skulle vara en pekare. Men han struntade i att förklara det steget
  13. Så vad jag har förstått så skiljer sig array:er sig mot vanliga variabler när det gäller pekare? int a = 6; int* b = &a; // b pekar till a int c[10]; int* d = c; // här behöver man inte använda &-operatorn // eftersom det blir automatiskt minnesadressen? [inlägget ändrat 2004-06-13 11:37:12 av Onp]
  14. 1) Vad är det för skillnad på följande syntaxer? int& rSomeRef; int & rSomeRef; int &rSomeRef; Det som förvirrar mig är att jag i boken "Lär dig C++ på 3 veckor" läste att när man deklarerar referenser så är ett mellanslag före referensoperatorn obligatoriskt... men i samma bok har jag sett honom använda "int& variabel" som parameter till en funktion. 2) Är lite förvirrad vad gäller följande kod: void Test(char* a, int* {} int main() { char a[255]; int b = 0; Test(a, ; return 0; } När jag kompilerar detta får jag felet att b inte kan omvandlas från "int" till "int *". Ändrar jag b till en pekare så går det kompilera. Alltså: void Test(char* a, int* {} int main() { char a[255]; int* b = new int; Test(a, ; return 0; } Varför klagar den inte på a?
  15. Nja, det verkar mer nu som om diskettstationen är sönder faktiskt. Eftersom jag har lyckats installera Windows 98 nu på den och den kan inte läsa några disketter alls... den frågar om disketten ska formateras hela tiden, sen står det nåt felmeddelande om man trycker 'ja'.
  16. Hej. Har formaterat och installerat Windows 98 på denna gamla bärbara Compaq Armada 1520. Allt verkade fungera bra tills jag märkte att diskettstationen inte fungerar... hittar dessutom inga drivrutiner för diskettstationer på Compaqs hemsida. Nån som har erfarenhet av att installera en ren installation av Windows på en sån här dator, eller liknande modell? Mvh Oskar
  17. Har lite problem att installera Windows på en gammal bärbar dator. När jag fick den var den formaterad och när jag försöker starta datorn med diskett eller cd så står det bara "ogiltig systemdiskett". Har lyckats trycka F10 så jag kommer in i Setup-programmet, men hittar inte var jag ändrar bootordningen. Har hittat MultiBoot i hjälpfilerna, men i själva inställningarna förekommer den inte. Tacksam för alla svar, ska nämligen lämna denna till min syster som åker iväg nu på tisdag... lite bråttom :/
  18. Du skojar? Inte längesen jag köpte nytt minne... R/ Mycket riktigt. Jag plockade bort mitt nyinköpta TwinMOS 512MB DDR och nu funkade det att installera... vet ju inte om man är gladare för det. Ganska mycket pengar där :/ [inlägget ändrat 2003-08-28 12:09:45 av Onp]
  19. Formatera hela hårddisken är nog ganska uteslutet, har liksom 80 gb på den. Men alltså jag har partitionerat den till 5gb / 75 gb... där jag har windows på den ena... så det bör väl räcka att bara formatera c: ?? Men iallfall, jag har lyckats boota från cd-n nu men nu får jag mer fel... skapade en ny tråd eftersom rubriken inte stämmer längre: //eforum.idg.se/viewmsg.asp?EntriesId=485574
  20. Jag har formaterat datorn efter lite strul. Nu har jag startat om datorn med XP-skivan i och startar installationsprogrammet. Ungefär 10% så kommer det fram fel om att "BLABLA.dll inte är en giltig systemavbildning" eller liknande. Har även provat installera från en annan Xp-skiva och en win2000-skiva - samma resultat. Har också provat att byta cd-rom! Vad är fel?? [inlägget ändrat 2003-08-27 23:19:29 av Onp]
  21. Igår hände nåt lustigt, fick en massa blåskärmar och felmeddelanden helt utan anledning. Försökte starta datorn med XP-skivan men den bootar inte! (jag har ändrat bootordningen). Står bara "ta bort flyttbara diskar". Provade då ladda hem XP's bootdisketter och startade med dem. Satte i skivan och installationen startade. Efter en stund fick jag fel om att det saknas en massa filer på cdn ?? Har även provat en annan XP-skiva, samma fel. Det var bara två dagar sedan jag installerade XP på en annan dator utan problem, så jag misstänker det är nåt fel med BIOS i min dator?
  22. En fråga: Hur mycket sämre skulle det bli om man parallellkopplade alla telefoner?
  23. Den har säkert haft samma värde hela tiden, bara det att jag inte kollat temperaturen förrän nu. 10 månader sen var alltså då jag köpte alltihop. Men jag ska kolla fläktarna efter damm och byta kylpasta, etc... ska se om det hjälper.
  24. Alpha PAL8045T Kylpastan lades på för ca 10 månader sedan. Kanske ska bytas med jämna mellanrum? [inlägget ändrat 2003-04-23 22:04:26 av Onp]
  25. Hur länge? När jag spelar i 5 min och går ut och kollar så ligger den redan på 65, typ.
×
×
  • Skapa nytt...