AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [C++] Pointer-Problem: illegal indirection
Thema durchsuchen
Ansicht
Themen-Optionen

[C++] Pointer-Problem: illegal indirection

Ein Thema von Matze · begonnen am 7. Nov 2007 · letzter Beitrag vom 7. Nov 2007
Antwort Antwort
Seite 2 von 3     12 3      
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 21:17
Auch wenn ich nicht sehr oft mit C++ gearbeitet habe, würde ich intuitiv doch Torpedo zustimmen. Denn wenn ich einen int* habe, diesen als Array interpretiere und dann indexiere (und das gibts ), dann muss ich das nicht auch noch dereferenzieren. Zum Mitschreiben:
Code:
int* IntArray;
IntArray = new int[5]; //ist das so richtig?
//oder gerne auch mit malloc

IntArray[3] = 5;

delete IntArray;
Und jetzt lyncht mich.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#12

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 21:24
@Apollonius:
Das ist mehr Java als C++

Hier mal ein Beispiel:
Code:
#include <iostream>
using namespace std;

int main() {
   int arr[5];      // Normales Array erstellen
   int * a = arr; // Das Programm kompiliert hier fehlerlos, weil ein array ein Pointer ist und damit mit int* kompatibel
   a[0] = 3; // Trotzdem kann man dann ohne * darauf zugreifen, weil das schon [] macht
   cout<<a[0]<<"\n"; // Es wird 3 ausgegeben
   return 0;
}
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 21:26
Tatsache, Torpedo hat recht.

Der Fehler:

Zitat:
Error 1 error LNK2001: unresolved external symbol "public: int __thiscall CPruefung::NummerSenden(void)" (?NummerSenden@CPruefung@@QAEHXZ) CKommunikation.obj
Error 2 fatal error LNK1120: 1 unresolved externals D:\Eigene Dateien\...\Projekt_1.exe 1
trat auf, weil ich hier das "void" als "Parameter" vergessen hatte.

Code:
void CPruefung::NummerSenden()
Ich danke allen, die mir hier geantwortet haben.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#14

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 21:27
Aaaah, jetzt hab ich es auch verstanden. Glaube ich . Wenn ich das richtig sehe, enthält das Array ja gar keine Zeiger, sondern direkt die Objekte (so langsam verstehe ich, warum C++ mit diesem Konzept ziemlich allein auf weiter Flur steht *g*), dann ist die Dereferenzierung per * oder -> natürlich komplett überflüssig. Die Dereferenzierung von CStudent* nach CStudent steckt ja schon im []-Operator.

[edit]
Jut, so langsam erreichen wir wohl Konsens .
[/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 21:28
@Torpedo:
Das ist wohl ein Kompliment - ich habe mich nie im Entferntesten mit Java beschäftigt.
Aber sofern mich meine C-Kenntnisse nicht ganz verlassen haben, ist mein Code auch halbwegs korrekt, wenn ich ein dynamisches Array erstellen will - bei dir ist die Größe ja hartcodiert. Und falls das new nicht ganz stimmen sollte, kann man ja auch malloc(5*4) nehmen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 21:37
Zitat von Khabarakh:
Aaaah, jetzt hab ich es auch verstanden. Glaube ich [...] Die Dereferenzierung von CStudent* nach CStudent steckt ja schon im []-Operator.
Ach jetzt verstehe ich's auch so langsam. Das hat Torpedo ja eigentlich auch geschrieben, nur war ich fest davon überzeugt, dass ich das manuell mit dem * machen muss.

Nun habe ich hier 2 nützliche Dinge gelernt:

1. [] ist ein Operator (ich wusste das wirklich nicht)
2. [] dereferenziert gleich, sehr schön.

Danke nochmals.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#17

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 22:04
Etwas offtopic, aber vielleicht interessant für dich:
Zitat:
1. [] ist ein Operator (ich wusste das wirklich nicht)
Dann zieh dich schonmal warm an. Der Pfeil ->, die Klammern (), das Komma , , das Und &, der Punkt . usw. sind auch alle Operatoren. Aber das kranke daran ist, dass man sie (fast) alle überladen kann. Viel Spaß bei deiner weiteren Entdeckungsreise
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 22:12
Hi

Zitat von OregonGhost:
Dann zieh dich schonmal warm an. Der Pfeil ->, die Klammern (), das Komma , , das Und &, der Punkt . usw. sind auch alle Operatoren. Aber das kranke daran ist, dass man sie (fast) alle überladen kann. Viel Spaß bei deiner weiteren Entdeckungsreise
Dass ->, & und . auch Operatoren sind, wusste ich, aber () und , ist mir neu.
Das mit dem Überladen lasse ich vorerst mal, sonst geht hinterher gar nichts mehr und ich blicke überhaupt nicht mehr durch.

Danke für die Info. Man lernt eben nie aus.
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#19

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 22:19
Zitat von Matze:
Das mit dem Überladen lasse ich vorerst mal, sonst geht hinterher gar nichts mehr und ich blicke überhaupt nicht mehr durch.
Dabei soll es genau das Gegenteil bewirken Verkettete Listen auf die man mit [] zugreifen kann sind doch viel durchsichtiger.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#20

Re: [C++] Pointer-Problem: illegal indirection

  Alt 7. Nov 2007, 22:33
Zitat von Matze:
[...]aber () und , ist mir neu.
Das sind sogar zwei ganz bitterböse . Die normale Klammer "(a)" ist kein Operator (jedenfalls habe ich noch nie gelesen, dass sie als ein solcher irgendwo definiert wird), in einer prozessornäheren UPN-Schreibweise würde sie ja auch wegfallen. Überladen lässt sie sich einmal als Cast-Operator "(a)b" und einmal als Function-Call-Operator "f()". Zum Komma sage ich lieber nichts, denn nachdem ich wie du gerade zum ersten Mal überhaupt von ihm gehört habe, will ich ihn bis morgen lieber wieder vergessen .

@Torpedo: Fragt sich, ob man eine verkettete Liste wirklich indizieren will .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz