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

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

1

08.04.2004, 20:56

Der "this Zeiger" - schön oder eher nich ;)

27%

Weg damit, viel schöner ohne den (3)

73%

"Faulheit siege!" (8)

Hi,

ich hab mal ne Frage zu eucht, ich will nicht wissen, was ein "this Zeiger" ist oder wozu er da ist! ;). Ich möchte wissen ob ihr einen this Zeiger im Code "schön" findet. Ich benutze ihn oft, weil man dann ja nicht so viel schreiben muss aber Code wie der:

Quellcode

1
2
3
4
5
if(this->initialized) 
{
    if(!this->conencted)
        this->ConnectToServer();
}

find ich irgendwie nich mehr schön. Einen Vorteil hat der this Zeiger ja auch noch, das man Parameter benutzen kann, die vom Namen her gleich sind, und trotzdem unterscheiden kann (ich weiss das das sehr unschön ist):

Quellcode

1
2
3
4
bool Init(bool connected)  {
    if(this->connected)
        this->connected=connected;
}

Was meint ihr "Weg damit, viel schöner ohne den" oder "Faulheit siege!" ;)

Anonymous

unregistriert

2

08.04.2004, 21:23

also ich kann nur sagen das deine Beispiele eigendlich fehlerhaft sind. Der this Zeiger ist sehr parktisch bei modularen Aufgaben.
Bei einer Funktion der Klasse muss man doch eigendlich den this Zeiger nicht benutzen um auf die Var zu zugreifen.
Das 2. Beispiel ist zwar möglich, aber es stiftet bei den meisten nur Verwirrung, wenn die selben Namen auftauchen. :huhu:

3

08.04.2004, 21:27

This is dafür nicht gedacht.

This ist dafür gedacht, klassen instanzen zu übergeben.

Wenn man bei der KI Klasse ist z.b. Panzer und dieser einem Geschütz übergeben will (Pointer auf die Positionen).

Dann kann man entweder den Iterator von std::vector verwenden, direct std::vector (oder anderes) oder halt this.

this->m_bSelected; halt ich für schwachsinn, wozu is das m_ (member) Prefix da ?

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

4

08.04.2004, 21:30

NAJA, um auf Member-Variablen zuzugreifen, benutze ich ihn höchstens, um mir von der IntelliSense-Hilfe von MS VC++ meine Member zeigen zu lassen und die langen Namen schreiben zu lassen... :-)
(und natürlich falls ich ihn"wirklich" brauche für Methoden, die Funktionen aufrufen, die das eigene Objekt erwarten)
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

08.04.2004, 21:33

Ahso, jetzt wird mir einigers klar, thx. In meinem Buch steht die Benutzung etwas anders drin.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

6

08.04.2004, 21:53

this ist zwar schön und gut bei der VC-ide aber er ist eigentlich für was total anderes gedacht anstatt für faulheit, okay ich benutze ihn auch, aber nicht aus faulheit, sondern weil ich sonst nicht direkt erkenne, welche variable gehört zur klasse bzw. interface.

7

09.04.2004, 04:05

Ich hab zwar für Faulheit gestimmt. Nutze ihn aber nur dann wenn ich grad nicht den Namen einer Methode oder Funktion weis. Generell bin ich aber Faul ;D

Was soll das denn heißen: "Der this-Zeiger ist eigentlich für was anderes gedacht"? JA natürlich er ist ein unsichtbarer Parameter jeder Methode. Und er ist natürlich dafür da um auf die Eigenschaften oder Methoden einer Klasse zuzugreifen. Ob ich das nun ausschreibe oder der Compiler den Code später hinzufügt ist doch Wurscht.

Viele haben ja was gegen Notationen (welche auch immer) und benutzen daher ein m_ - Präfix nicht. Bei so einem Code ist es nur erwünschenswert wenn er das ganze ausschreibt (also this->blablabla). Das macht es einfacher den Code zu lesen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

8

09.04.2004, 11:22

@DragonMaster:
er ist eher für sowas da:

Quellcode

1
2
3
4
5
6
7
bool CFoo::compare (CFoo *bar)
{
    if (this* == bar)
          return true;

    return false;
}

9

09.04.2004, 13:27

Genau wie ich gerne weiss, wo ich grade bin, halte ich es nur für sinnvoll, dass ein Objekt seine Adresse kennt.

Wenn zwei Objekte, Petra und Sandra, sich treffen, und Petra gibt Sandra ihre Adesse und Sandra weiss, dass Petra das Interface Kommunikation mit den Methoden

fast gossip mobile(); //schnell und teuer, einzelverbindung
medium gossip mail(); //billiger, etwas langsamer, einzelverbindung
slow gossip smokerings(); //umsonst, Nachteile: Verursacht Krebs, Broadcasting, unscharfes Signal

implementiert, dann kann Sandra noch später entscheiden auf welche Art sie sich bei Petra melden will. Ist das nicht hervorragend?

Eine Visitenkarte dabei zu haben ist halt toll.

10

09.04.2004, 16:06

man soll unter Drogen nich coden :D

Werbeanzeige