Array funktionsübergreifend verwenden?



  • Ich weiß nicht ob ich das jetzt so ganz richtig verstanden hab, bin grad bissel verwirrt 😃 aber ich verallgemeiner das mal.

    Du definierst die Variable in der main-Funktion und übergibst sie den Funktionen als Argument.

    Und gewöhn dir von Anfang an an, std::vector zu benutzen anstatt arrays.

    Lg freeG



  • fr33g schrieb:

    Du definierst die Variable in der main-Funktion und übergibst sie den Funktionen als Argument.

    Das hat leider nicht so ganz geklappt, ich bekomme dann immer Meldungen das der Variablentyp nicht kompatibel ist...

    Zu den Vectoren: die verstehe ich mal so gar nicht, was genau haben die mit einem Array zu tun?



  • Post mal am besten ein bisschen Code, also ein Minimalbeispiel.

    Ein vector ist eigentlich das gleiche wie ein array blos viel besser 😉
    Es ist leichter zu handhaben und auch sicherer.

    http://www.cplusplus.com/reference/stl/vector/
    http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container

    Lg freeG



  • Hui, war bisher nur zu faul mir auch englische Seiten anzugucken, lese ich mir gleich mal durch, aber erst bereit ich mal den Code eben vor, dann könnt ihr auch gleich rummeckern was ich alles noch verbessern kann 😉



  • Wäre es denn nicht sinnvoller eine Klasse zu konstruieren die alles anbietet?

    Lg Tobi



  • T0bi schrieb:

    Wäre es denn nicht sinnvoller eine Klasse zu konstruieren die alles anbietet?

    Lg Tobi

    Ich denke es wäre für ihn noch sinnvoller erst mal ein anständiges C++-Grundlagenbuch durchzuarbeiten, denn er wird wohl auch noch nich viel Ahnung von Klassen haben wenn er erst heute Mittag begonnen hat;)

    Lg freeG



  • Also ic hhabe mir das ca. so vorgestellt:

    #include <iostream> 
    
    using namespace std; 
    
    int printEnemy(int id);
    int createEnemy(int health, int mana, int minDmg, int maxDmg, int armor);
    
    int main() 
    { 
    
        int allEnemys[][6] = // naja das soll dann das array sein was ich überall verwenden möchte
    	{
    		{0,0,0,0,0,0} // den brauche ich weil sonst die variable 
    		              // mault in der ich die elemente zähle
    		              // um die id zu berechnen für den nächsten eintrag
    	};
    
    	// ich denke so müsste das gehen
    	createEnemy(52 /*health*/, 48 /*mana*/, 3 /*minDmg*/, 6 /*maxDmg*/, 10 /*armor*/); 
    
    	cout << printEnemy(1) << '\n';
    
    	system("PAUSE"); // damit fenster net zugeht, mit "starten ohne debug" geht das nich -.-
    
    }
    
    int printEnemy(int id)
    {
    
    	return allEnemys[id]; // ... ja hier muss ich auch noch herausfinden
    	                      // wie ich alle 5 übergebe, müsste doch
    	                      // eigentlich so schon gehen oder?  
    }
    
    int createEnemy(int health, int mana, int minDmg, int maxDmg, int armor)
    {
    
    	int id = sizeof(allEnemys)/sizeof(int)/5+1; // eben die id der
    	                                            // nächsten einheit
    
    	allEnemys[id] = {id, health, mana, minDmg, maxDmg, armor}; // hier weiß ich auch nicht
    	                                                           // ob das so überhaupt geht...
    
    	return true;
    
    }
    

    Zusätzliche Frage: wenn ich statt Zeile 19 eine if Struktur einbaue die überprüft ob createEnemy true zurückliefert, und dann erst Zeile 21 ausgebe, würde dann der Eintrag übernommen werden? Muss ja eigentlich oder?

    Achja, Compilermeldungen:

    1>c:\users\com\documents\visual studio 2010\projects\rainer\rainer\rainer.cpp(31): error C2065: 'allEnemys': nichtdeklarierter Bezeichner
    1>c:\users\com\documents\visual studio 2010\projects\rainer\rainer\rainer.cpp(39): error C2065: 'allEnemys': nichtdeklarierter Bezeichner
    1>c:\users\com\documents\visual studio 2010\projects\rainer\rainer\rainer.cpp(39): error C2070: ''unknown-type'': Ungültiger sizeof-Operand
    1>c:\users\com\documents\visual studio 2010\projects\rainer\rainer\rainer.cpp(42): error C2065: 'allEnemys': nichtdeklarierter Bezeichner
    1>c:\users\com\documents\visual studio 2010\projects\rainer\rainer\rainer.cpp(42): error C2059: Syntaxfehler: '{'
    1>c:\users\com\documents\visual studio 2010\projects\rainer\rainer\rainer.cpp(42): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
    1>c:\users\com\documents\visual studio 2010\projects\rainer\rainer\rainer.cpp(42): error C2143: Syntaxfehler: Es fehlt ';' vor '}'
    


  • Ok also ich würde dir hier empfehlen mach dich erst einmal mit den Grundlagen vertraut. Es scheint mir das du schon ein konkretes Ziel im Kopf hast und jetzt irgendwie versucht es zu erreichen. Es wäre dennoch viel besser, wenn du dir erst mal alle Möglichkeiten anschaust.
    Wie man Funktionen mit Parametern bau und aufruft scheinst du ja schon zu wissen. Nun schau dir doch mal an was Strukturen / Klassen sind, Listen oder andere Containerklassen und dann vllt. noch new und delete.

    Damit lässt sich schon eine ganze Menge mehr anfangen 🙂

    Lg Tobi



  • Ich führe gerade eine epische Aktion durch, ich habe eine Leiter geholt, kletter auf meinen Minidachboden, hole die Kartons runter und suche mein Buch 😛



  • Das kann ich dir auch nur empfehlen, denn der Code sieht schon arg wild aus 😃

    Das würde jetzt nicht viel bringen das richtig zu stellen.
    Schnapp dir dein Buch arbeite es durch, dann wird alles nach für nach klar und du kannst das was du jetzt probierst hast richtig und ordentlich machen und natürlich viel mehr;-)

    Was für ein Buch hast du denn?

    Lg freeG


  • Mod

    fr33g schrieb:

    Was für ein Buch hast du denn?

    Ich ahne schon, was gleich für eine Antwort kommt...



  • WOLF Alaaaaarm 😃 😃 😃



  • Hui, das war hammerhart anstrengend, so, typisch ich war das Buch nicht komplex auf dem Dachboden verstaut, sondern fein säuberlich im Keller im Regal ... 😃

    Also ich habe gefunden:

    C++ - Objektorientierte Programmierung von Anfang an von Helmut Erlenkötter (Das suchte ich)

    Und 2 furchtbar dicke Wälzer (etwas älter) wo einfach C++ / C++ lernen und professionell anwenden drauf steht, vielleicht steht da ja noch was aktuelles drin 😉 Ich sehe grade, sogar mit CDs 😛



  • Steht in deinem Buch schon etwas von STL drin?
    Wann ist das erschienen?

    Zu deinem Programmierprojekt ist das ein vorhandenes, welches du verändern möchtest oder wird alles neu geschrieben?



  • f.-th. schrieb:

    Steht in deinem Buch schon etwas von STL drin?
    Wann ist das erschienen?

    Zu deinem Programmierprojekt ist das ein vorhandenes, welches du verändern möchtest oder wird alles neu geschrieben?

    Da steht unter STL etwas von "Standard Template Library" und u.a. Vektoren.

    amazon.de schrieb:

    Taschenbuch: 336 Seiten
    Verlag: rororo; Auflage: 13 (3. Januar 2000)
    Sprache: Deutsch

    Also das ist kein vorhandenes Projekt, und soll eigentlich auch kein Megaprojekt werden, nur ein Testlauf quasi.



  • Ich kann mich da meinen Vorrednern, äh... Vorpostern, nur anschliessen. So wie´s aussieht hast du ein konkretes Ziel vor Augen und lernst die Abschnitte aus dem Buch, die auf den ersten Blick eine Lösung anbieten. Damit bekommst du aber keinen Gesamtüberblick über die Leistungsfähigkeit von C++, sondern "löst" das Problem durch Frickelei.

    Daher mein Tipp:
    Lies dir das Buch in Ruhe durch, aber komplett, löse die Übungsuafgaben und wenn du damit fertig bist versuch´ das Gelernte auf dein Problem anzuwenden. Wenn das Buch oft struct, strcpy oder char[] verwendet wirf es weg oder zünde den Kamin damit an und besorg´ dir ein aktuelles Buch, das auch wirklich C++ behandelt. Irgendwo hier im Forum werden gute C++ Bücher genannt, falls du nicht weißt, welches du dir kaufen sollst.


Anmelden zum Antworten