AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

was ist in c++ der "->" Operator?

Ein Thema von xy124 · begonnen am 12. Jun 2008 · letzter Beitrag vom 20. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
xy124

Registriert seit: 3. Dez 2007
146 Beiträge
 
Delphi 7 Personal
 
#1

was ist in c++ der "->" Operator?

  Alt 12. Jun 2008, 21:39
ich hab mir grad' ein bisschen c++ beigebracht und jetzt stoße ich ständig gegen diesen operator (->) wenn ich zum Beispiel mit button1->text="Hallo duda" einen Text zuweisen will.
Nun interressiert mich brennend, was der unterschied zwischen "." (den Punkt nehm' ich immer bei z.B. Variablen aus eigenen Klassen)
und diesem Pfeil ist.

Auf allen Internetseiten die ich besucht habe und in diesem tollem Tutorial hier hab ich auch nichts brauchbares gefunden.

Nur von Wikipedia weiß ich der Pfeil steht für "Zugriff auf Member eines Objekts über einen Zeiger"
aber warum geht dann nicht auch button.text =... wenn ich's ohne Zeiger machen will?

Ich hoffe es gibt ein paar Delphianer unter euch, die mir diese c++ Frage beantworten können

-xy124-
o o
LJ
TTT
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: was ist in c++ der "->" Operator?

  Alt 12. Jun 2008, 21:43
der Pfeil ist das gleiche wie ein dereferenzieren und dann mit dem Punkt
also:
Code:
pointer_to_struct->struct_member = (*pointer_to_struct).struct_member;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
OregonGhost

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

Re: was ist in c++ der "->" Operator?

  Alt 13. Jun 2008, 08:58
Zitat von xy124:
Nur von Wikipedia weiß ich der Pfeil steht für "Zugriff auf Member eines Objekts über einen Zeiger" aber warum geht dann nicht auch button.text =... wenn ich's ohne Zeiger machen will?
Nochmal spezifischer für dein Beispiel: Weil button bereits ein Zeiger ist (in diesem Fall). Wenn du es ohne Zeiger machen willst (naja, ohne Pfeil), musst du es so machen, wie SirThornberry beschreibt, nämlich den Zeiger dereferenzieren:
(*button).text = ...
Da man in C und C++ häufig mit Zeigern hantiert, hat man diesen Pfeil als Vereinfachung eingeführt. In Delphi ist es eigentlich auch so kompliziert (Dereferenzierung mit ^), aber der Compiler schummelt etwas und man kommt nahezu immer ohne das Dach aus, jedenfalls im Alltag.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
xy124

Registriert seit: 3. Dez 2007
146 Beiträge
 
Delphi 7 Personal
 
#4

Re: was ist in c++ der "->" Operator?

  Alt 13. Jun 2008, 19:58
also kibt es in c++ von klassen auch zeiger und um den echten Wert hinter dem zeiger zu bekommen nutzt man also diesen ->
...dasnke hat mir sehr geholfen
könntet ihr mir auch verraten (wenn das nicht zu kompliziert ist) wie ich jetzt z.B. von dieser Klasse:
Code:
class hund {
private:
   int age;
public:
   hund(){ //= create
      cout<<"Hund wird gebaut"<<endl;
   }
   int lieb;
   void setage(int newage) {
      age=newage;
   }
   int getage() {
      return age;
   }
   void foo(hund dummy) //destroyer, braucht als parameter einen hund, der griegt den namen dummy
    {
      dummy.setage(-1); //geiles Alter nicht
    }
};
einen Zeiger erstelle?
müsste das nicht so gehen? :
Code:
        hund bello;
   hund* derzeigerhund;
   derzeiger=&bello;
   derzeigerhund->lieb=3;
   cout<<endl<<bello.lieb;
   system("PAUSE");
o o
LJ
TTT
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#5

Re: was ist in c++ der "->" Operator?

  Alt 13. Jun 2008, 20:17
eine klassen variable ist imho ein typisierter zeiger der auf ein objekt zeigt (sofern erstellt). in delphi ist also folgendes ein zeiger:
Delphi-Quellcode:
var
  miep: TObject;
meine zeh++ kenntnisse sind zwar eingerostet, aber soweit ich noch weiß ist es dort genauso
  Mit Zitat antworten Zitat
Apollonius

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

Re: was ist in c++ der "->" Operator?

  Alt 13. Jun 2008, 20:41
Du kannst dem KLassenzeiger eine Referenz zuweisen, ja, aber das ist sehr unüblich. Die klassische Verwendung sieht so aus:
Code:
hund* derzeigerhund = new hund;
//...
delete hund;
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
xy124

Registriert seit: 3. Dez 2007
146 Beiträge
 
Delphi 7 Personal
 
#7

Re: was ist in c++ der "->" Operator?

  Alt 18. Jun 2008, 18:40
ok danke hat mir sehr geholfen
aber nochmal was anderes der new-operator geht der auch, wenn man von einer eigenen klasse instanzen zur Laufzeit erstellen will?

das hier
Code:
wauwau = new hund();
funktionier jeden falls nicht
wie mach ich das dann?

hoffe ihr könnt mir helfen

-xy124-
o o
LJ
TTT
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: was ist in c++ der "->" Operator?

  Alt 18. Jun 2008, 19:14
Zitat:
funktionier jeden falls nicht
welche Fehlermeldung bekommst du denn? In deinem Ministück wird nirgends der Typ definiert zudem denke ich das new einen Zeiger zurück gibt so das du einen pointertyp benötigst.

folgendes funktioniert bei mir ohne probleme
Code:
TForm1* myform = new TForm1(0);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
xy124

Registriert seit: 3. Dez 2007
146 Beiträge
 
Delphi 7 Personal
 
#9

Re: was ist in c++ der "->" Operator?

  Alt 19. Jun 2008, 17:40
na alles zusammen sieht in etwa so aus:
Code:
class hund {
private:
   int age;
public:
   hund(){ //= create
      cout<<"Hund wird gebaut"<<endl;
   }
   int lieb;
   void setage(int newage) {
      age=newage;
   }
   int getage() {
      return age;
   }
   void foo(hund dummy) //destroyer, braucht als parameter einen hund, der griegt den namen dummy
    {
      dummy.setage(-1); //geiles Alter nicht
    }
};

int main() {
  wauwau = new Hund();
}
Edit der compiler lässt mich garnicht erst starten, er sagt immer:
Zitat:
c:\dokumente und einstellungen\Benutzername\eigene dateien\visual studio 2008\projects\komm\komm\komm.cpp(165) : error C2065: 'wauwau': nichtdeklarierter Bezeichner
o o
LJ
TTT
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: was ist in c++ der "->" Operator?

  Alt 19. Jun 2008, 17:53
Code:
hund* wauwau = new hund();
Nachtrag: wuerde uebrigens immer direkte Pointer vermeiden, wenn es geht. Dafuer gibt es Container auf dem Stack ala boost::scoped_ptr ...
Nachtrag #2: Uebrigens benutzt boost::scoped_ptr auch einen ueberladenen operator->() und man kann damit putzige Sachen anstellen. Ich habe beispielsweise mal eine Wrapper-Templateklasse geschrieben die sich quasi um eine existierende (Legacy-)Klasse - welche immer mit Instanzpointern statt auf dem Stack benutzt wurde - herumlegte und bestimmte unsichere Dinge einfach verbot, andere aber ohne weiteres zuliess. Wie heisst es so schoen, wenn man ein Problem loesen will, erhoehe man einfach das Abstraktionslevel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:59 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