Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Korowai
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
... class Basis {bool Basisaktiv;} ... int Basisabfrage (int Basisnummer) { char Basiswahl; cout << "In welche Basis? "<<endl; cin >> Basiswahl; if ("Zeiger auf Basisaktiv"=false) {überspringe Basisnummer der aktiven Basis} if (("Zeiger auf Basisaktiv"=true) && (Basiswahl= "Nummer der gewählten Basis)) {Setze Wert für Basisnummer} return Basisnummer; } ... int main { Basis NewYork; Basis Bottrop; Basis Stuttgart; Stuttgart.Basisaktiv=true; Bottrop.Basisaktiv=true; NewYork.Basisaktiv=true; // Alle drei Basen sind bspw. vorhanden, was sich in der while SChleife jedoch ändern kann while (true) { ... Basisabfrage (Basisnummer); if (Basisnummer = "Wert für Stuttgart") {cout << "Du bist in Stuttgart" << endl;} ... } return 0; } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Korowai
unregistriert
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Wobei es vielleicht sogar noch sinnvoller wäre einen std::vector<Base*> zu übergeben. Oder einen std::vector<Base>&
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Pointer erzeugen int* IntPointer = new int; // steht wahrscheinlich irgendwo im Buch int IntegerWert = 6; // dem Inhalt des Pointer einen Wert zuweisen *IntPointer = IntegerWert; // nennt man auch dereferenzieren // dem Pointer eine Adresse zuweisen IntPointer = &IntegerWert; // IntPointer zeigt jetzt auf die Adresse in der IntegerWert liegt // Pointer als Parameter (Prototyp der Funktion) void Funktion(int* IntPointer); // Aufruf der Funktion Funktion(&IntegerWert); // adresse von IntegerWert übergeben // oder Funktion(IntPointer); // IntPointer ist schon ein Pointer kann also ganz normal übergeben werden // Pointer als Rückgabewert (Prototyp der Funktion) Int* Funktion(); // Funktion Int* Funktion() { return &IntWert; // mal angenommen IntWert ist Global, mit Lokalen Variablen gehts nicht. } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Pointer erzeugen int* IntPointer = new int; // hier wird speicher Reserviert der Später auch wieder Freigegeben werden muss // reservierten Speicher wieder Freigeben delete IntPointer; // Ansonsten hat man ein Speicherleck (memory leak) // Bsp. für ein Speicher leck int* IntPointer = new int; IntPointer = &IntegerWert; // hier wird dem Pointer eine neue Adresse zu gewiesen ohne das die alte im speicher wieder frei gegeben wurde // Richtig wäre es so int* IntPointer = new int; delete IntPointer; // Speicher wieder Freigegeben IntPointer = 0; // So kann man sicher gehen das er nicht auf irgendwas zeigt if(IntPointer == 0) IntPointer = &IntegerWert; // kein Speicherleck da IntPointer auf keine Adresse mehr zeigt. |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Koschi« (28.07.2015, 18:37)
Korowai
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void Basisnummer(Basis& basis) { basis.Basisnummer = 5; } void main() { Basis Stuttgart; Stuttgart.Basisnummer = 3; // Basisnummer von Stuttgart ist 3 ... Basisnummer(Stuttgart); // Basisnummer von Stuttgart ist 5 } |
Ist die Klasse schon ein Zeiger?Ich möchte innerhalb einer Funktion auf eine per header erzeugte Klasse zugreifen, auf eine Variable, die ich im Bereich public: erzeuge.
Anstatt die komplette Klasse einzubinden, möchte ich nur dieses eine Element in der Klasse abfragen, genauer gesagt in den jeweiligen Instanzen der Klasse.
Wo initialisiere ich den Pointer?
Korowai
unregistriert
Korowai
unregistriert
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
#include <iostream> #include <conio.h> #include <iterator> #include <list> #include <vector> #include <list> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string> #include "Testheader.hpp" using namespace std; int Basisnummer0=13; int Nummer0; // Funktionsprototyp void Basiswechsel(int &Basisnummer, CBasis &RestonaGuldon_Spieler, CBasis &KlendautKlendaut_Spieler, CBasis &AbsariLumos_Spieler, CBasis &HysskallMatras_Spieler) { bool p0=false; bool p1=false; bool p2=false; bool p3=false; cout << endl; cout << "In welche Basis wollen Sie wechseln? " << endl; if (RestonaGuldon_Spieler.m_Basisaktiv==true && p0==false) { cout << "Restona Guldon - 1" << endl; p0=true; } if (KlendautKlendaut_Spieler.m_Basisaktiv==true && p1==false) { cout << "Klendaut Klendaut - 2" << endl; p1=true; } if (AbsariLumos_Spieler.m_Basisaktiv==true && p2==false) { cout << "Absari Lumos - 3" << endl; p2=true; } if (HysskallMatras_Spieler.m_Basisaktiv==true && p3==false) { cout << "Hysskall Matras - 4" << endl; p3=true; }; while (true) { char hm=getch(); if (hm=='1' && RestonaGuldon_Spieler.m_Basisaktiv==true) { Basisnummer0=13; break; } if (hm=='2'&& KlendautKlendaut_Spieler.m_Basisaktiv==true) { Basisnummer0=1; break; } if (hm=='3'&& AbsariLumos_Spieler.m_Basisaktiv==true) { Basisnummer0=9; break; } if (hm=='4' && HysskallMatras_Spieler.m_Basisaktiv==true) { Basisnummer0=21; break; } cout << "Falsche Eingabe"<< endl; } return; } int main() { CBasis RestonaGuldon_Spieler; CBasis KlendautKlendaut_Spieler; CBasis AbsariLumos_Spieler; CBasis HysskallMatras_Spieler; RestonaGuldon_Spieler.m_Basisaktiv=true; KlendautKlendaut_Spieler.m_Basisaktiv=true; cout << "Basis Nummer vor der Funktion: " << Basisnummer0 << endl; cout << "Funktion wird aufgerufen!" << endl; Basiswechsel(Basisnummer0, RestonaGuldon_Spieler, KlendautKlendaut_Spieler, AbsariLumos_Spieler, HysskallMatras_Spieler); cout << "Basis Nummer: " << Basisnummer0 << " wurde gewaehlt." << endl; return 0; } |
Werbeanzeige