Du bist nicht angemeldet.

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

1

01.01.2012, 16:18

C++ Zeiger, Arrays und Funktionen

Hey, ich bins schon wieder mit einem Problem ;(
Ich reserviere Speicher:
pSchiffe = new CRaumschiff[Anzahl];
nun versuche ich ein einzelnes Schiff zu steuern:
pSchiffe[Anzahl-1]->Starten();
jedoch tretet hier ein Fehler auf, wieso?

LG Denniro
Only God can judge me.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

01.01.2012, 16:49

Weil du nur den speicher reserviert hast. Da steht aber noch nichts drin.

Du brauchst noch ein

C-/C++-Quelltext

1
pSchiffe[xyz] = new CRaumschiff();

3

01.01.2012, 16:58

Ich habs so eingefügt und anschließend xyz ersetzt, " = " wird unterstrichen. Was tun?
Only God can judge me.

4

01.01.2012, 17:04

Problem gelöst: "->" durch "." ersetzt
Aber wieso?
Ich dachte, dass man bei Zeigern immer "->" benutzen muss
Only God can judge me.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

5

01.01.2012, 17:28

was für ein type ist denn pSchiffe ?

@Sylence: Dass muss auch nicht stimmen...

6

01.01.2012, 17:30

Wie meinst du welcher Typ? :S
Er wurde so deklariert:
CRaumschiff *pSchiffe = NULL;
Only God can judge me.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

7

01.01.2012, 17:34

Gah ich muss mir abgewöhnen auf C++ Fragen zu antworten...
War mal wieder bei C#

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

8

01.01.2012, 17:41

Ok das bedeutet pSchiffe zeigt auf eine Stelle im Speicher an der eine Instanze von CRaumschiff, bzw mehrere Instanzen direkt hintereinander liegen.
Mit

C-/C++-Quelltext

1
pSchiffe = new CRaumschiff[Anzahl];

erzeugst du nun so eine Liste von Raumschiffen, die alle im Speicher hintereinander liegen. mit pSchiff->"irgendwas" greifst du auf das erste Objekt über einen Zeiger zu, so wie du das gelernt hast. wenn du nun aber [] machst, dann wird dir die Instanze zurückgegeben und kein Zeiger darauf, deshalb musst du mit "." zugreifen. Intern funktioniert es natürlich genau so aber das is ja jetzt egal. Ich nehme mal an du hast einen Standardkonstruktor für deine Raumschiffklasse implementiert, denn sonst würde dass new CRaumschiff[Anzahl] nicht funktionieren.

PS: Ich empfehle dir allerdings dringend das ganze anders zu lösen, denn es ist sehr unflexiebel :) ... am besten du benutzt std::vector, damit ist alles wesentlich einfacher. oder du erzeugst eine Liste von zeigern, die dann auf die Raumschiffe zeigen... hoffe ich habe dich jetzt nicht verwirrt ;)

9

01.01.2012, 17:43

Danke, für die Antworten.

PS: bin mit vector noch nie in bekanntschaft getreten
Only God can judge me.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

Werbeanzeige