Zum Inhalt springen

CyberBob91

Mitglieder
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

  1. ich habe nun überall wo mit einem zeiger auf eine memberfunktion zugegriffen wird, ein -> gesetzt... bei den pMap-Zeigern hat es auch fehler behoben + es erschien nach setzen des -> sofort ein dropdownmenü mit möglichen memberfunktionen und variablen, wie es ja schließlich auch sein sollte, aber alle zeiger die auf ein Array verweisen akzeptieren kein -> sondern das menü erscheint nur bei einem . . Ist das richtig so, bzw. warum ist das so? danke nochmal für dei schnelle antwort eben
  2. danke für die antwort... zu meiner verteidigung muss ich sagen, dass ich erst seit 2 tagen c++ lerne und deshalb einfach noch nicht so gefestigt in themen wie zeigern bin... und nein ich habe nicht von anfang an soviel getippt um dann 46 fehler zu bekommen... am anfang hatte ich einfach lokale instanzen in der int main definiert... das hat wunderbar funktioniert war aber unübersichtlich, deshalb habe ich einfach den ganzen code in eine extra funktion gepackt, die instanzen auf dem heap erzeugt und einige sachen an der synthax geändert... und ja ich weiss, dass man bei zeigern -> benutzen muss um eine funktion aufzurufen, wie du siehst habe ich das ja auch bei einigen so gemacht, ich war mir nur auf grund der ganzen fehler unsicher und habe ein paar stellen zum test ausgetauscht...
  3. Hallo nochmal... ich habe nun ein anderes Problem: ich erstelle in einer Funktion Instanzen von bestimmten klassen auf dem Heap und versuche sowohl in der funktion als auch in der int main vergeblich auf diese instanzen zuzugreifen...(46Fehler xD) es ist mir bewusst, dass ich an manchen Stellen zwangsweise Fehler haben muss, weil ich den eigentlichen quellcode probeweise abgeändert habe, aber wie man das problem lösen kann weiss ich nicht... es wäre echt super wenn ihr mir helfen könntet hier mien code: #include <iostream> #include "karte.hpp" #include "einheit.hpp" using namespace std; int SpielfeldVorbereiten(); //HAUPTFUNKTION///////////////////////////////////// int main() { CKarte *pMap=NULL; CKing *pKing1=NULL; CKing *pKing2=NULL; CRanger *pRanger1=NULL; CRanger *pRanger2=NULL; SpielfeldVorbereiten(); //Erzeugt Instanzen für Spielfeld und Figuren auf dem Heap und setzt die Figuren *pMap.KarteZeichnen(); for (int i=0; i<20; i++) { pRanger1[1].Bewegen(*pMap); pMap.KarteZeichnen(); } pKing1.ZeigeStatus(); pRanger1[3].ZeigeStatus(); ///TEST////// //damit Prog nicht direkt schliesst int test; cin>>test; ///TEST//////// return 0; } int SpielfeldVorbereiten() { ////Das Spielfeld vorbereiten/////// //Instanz auf dem Heap erzeugen pMap = new CKarte; ///////////////////////////////////// //Instanten d. Figuren auf dem Heap erzeugen, initialisieren und die Figuren "aufs Spielfeld setzen" ////////Könige/////////// pKing1 = new CKing; //König Spieler 1 pKing2 = new CKing; //und 2 pKing1.Ini(1,5,9); pKing2.Ini(2,5,1); pKing1.Markieren(*pMap); pKing2.Markieren(*pMap); ///////////////////////// ////////Ranger////////// pRanger1 = new CRanger[3]; //ranger spieler1 pRanger2 = new CRanger[3]; //und spieler 2 pRanger1[1].Ini(1,4,9); pRanger1[2].Ini(1,6,9); pRanger1[3].Ini(1,4,7); //-- pRanger2[1].Ini(2,4,1); pRanger2[2].Ini(2,6,1); pRanger2[3].Ini(2,5,3); pRanger1[1]->Markieren(*pMap); pRanger1[2]->Markieren(*pMap); //pRanger1[3]->Markieren(*pMap); //-- pRanger2[1]->Markieren(*pMap); pRanger2[2]->Markieren(*pMap); pRanger2[3]->Markieren(*pMap); //////////////////////// cout<<endl; //////////////////////// return 0; } und hier die fehlermeldungen: D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(20) : error C2228: Der linke Teil von '.KarteZeichnen' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(25) : error C2228: Der linke Teil von '.KarteZeichnen' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(28) : error C2228: Der linke Teil von '.ZeigeStatus' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(43) : error C2065: 'pMap' : nichtdeklarierter Bezeichner D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(43) : error C2440: '=' : 'class CKarte *' kann nicht in 'int' konvertiert werden Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(50) : error C2065: 'pKing1' : nichtdeklarierter Bezeichner D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(50) : error C2440: '=' : 'class CKing *' kann nicht in 'int' konvertiert werden Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(51) : error C2065: 'pKing2' : nichtdeklarierter Bezeichner D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(51) : error C2440: '=' : 'class CKing *' kann nicht in 'int' konvertiert werden Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(53) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(54) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(56) : error C2228: Der linke Teil von '.Markieren' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(56) : error C2100: Zeigeroperation ungueltig D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(57) : error C2228: Der linke Teil von '.Markieren' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(57) : error C2100: Zeigeroperation ungueltig D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(61) : error C2065: 'pRanger1' : nichtdeklarierter Bezeichner D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(61) : error C2440: '=' : 'class CRanger *' kann nicht in 'int' konvertiert werden Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(62) : error C2065: 'pRanger2' : nichtdeklarierter Bezeichner D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(62) : error C2440: '=' : 'class CRanger *' kann nicht in 'int' konvertiert werden Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(64) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(64) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(65) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(65) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(66) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(66) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(68) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(68) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(69) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(69) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(70) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(70) : error C2228: Der linke Teil von '.Ini' muss eine Klasse/Struktur/Union sein D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(72) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(72) : error C2227: Der linke Teil von '->Markieren' muss auf Klasse/Struktur/Union zeigen D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(72) : error C2100: Zeigeroperation ungueltig D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(73) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(73) : error C2227: Der linke Teil von '->Markieren' muss auf Klasse/Struktur/Union zeigen D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(73) : error C2100: Zeigeroperation ungueltig D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(76) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(76) : error C2227: Der linke Teil von '->Markieren' muss auf Klasse/Struktur/Union zeigen D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(76) : error C2100: Zeigeroperation ungueltig D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(77) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(77) : error C2227: Der linke Teil von '->Markieren' muss auf Klasse/Struktur/Union zeigen D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(77) : error C2100: Zeigeroperation ungueltig D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(78) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(78) : error C2227: Der linke Teil von '->Markieren' muss auf Klasse/Struktur/Union zeigen D:\Programme\Microsoft Visual Studio\MyProjects\ProtectTheKingNeu\main.cpp(78) : error C2100: Zeigeroperation ungueltig Fehler beim Ausführen von cl.exe. ProtectTheKingNeu.exe - 46 Fehler, 0 Warnung(en) NOCHMAL THX IM VORRAUS ICH BIN ECHT AM VERZWEIFELN!
  4. Hallo zusammen^^;) :(mein Problem ist folgendes: ich habe eine klasse,deren memberfunktionen, auf eine bestimmte instanz einer bestimmten andere klasse im gleichen gültigkeitsbereich zugreifen muss. Zunächst habe ich das per Übergabe eines zusätzlichen Parameters geregelt, nämlich dem zeiger auf die Instanz der andern Klasse, doch mit wachsendem code wurde mir das zu lästig und da es ja schließlich immer ein und die selbe Instanz ist auf die zugegriffen werden muss, habe ich mir eine allgemeine Lösung überlegt: :confused: Eine statische Membervariable (Zeiger auf die Instanz auf die ich zugreifen will) ,der Klasse deren methoden den zeiger benötigen. Diese wird im protected teil der klasse definiert und am anfang der int main, nach erzeugen der instanz auf die ich zugreifen will, initialisiert. Anstatt einen Parameter für die Membermethoden zu nutzen, verwende ich nun direkt die statische variable in den methoden... Doch wenn ich den Code kompilieren will bekomme ich folgende Fehlermeldung: error C2655: 'm_map' : Definition oder Neudeklaration im aktuellen Gueltigkeitsbereich unzulaessig m_map ist in dem Fall die zeigervariable, die auf die Instanz zeigt.... warum sollte ich sie in diesem gültigkeitsbereich (lokal in der int main) nicht definieren können? vielleicht weiss ja jemand wo der wurm bei der fehlermeldung im normalfall drin ist xD wenn ihr mein es ist ein syntaxfehler, kann ich ja mal die entsprechenden codestellen posten. danke schonmal im Vorraus... xD:beagolisc

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...