++ c Scoping Seltsamkeit - Warum Innen-Typ Parameter von Elementfunktionen nicht Scoping nicht brauchen?

StackOverflow https://stackoverflow.com/questions/4071579

  •  28-09-2019
  •  | 
  •  

Frage

Lassen Sie uns sagen, dass wir gegeben sind diese Klasse mit einer inneren Struktur.

class Some {
   public:
    struct Crap{};
    Crap Process(Crap& c);
}


Some::Crap Some::Process(Crap& crap) {   Crap moreCrap = ..  }

Es macht Sinn für mich, dass der Rückgabetyp (Einige :: Mist) in "Process" scoped wird.

Es macht Sinn für mich, dass kein Scoping im Inneren des Körpers des „Process“ benötigt wird.

Ich verstehe nicht, warum die innere Struktur Parameter des Prozesses (Mist & Mist) nicht erfordert Scoping.

hat jemand eine Einsicht auf das? Dank

War es hilfreich?

Lösung

In der Tat, der Parametertyp hat müssen qualifiziert sein (es sei denn, Ihr Beispiel nicht korrekt ist und Sie beabsichtigen, für Process Mitglied Funktion von Some zu sein).

Andere Tipps

Unter der Annahme folgenden Ausschnitt:

class Some
{
public:
    struct Crap{};
    Crap Process(Crap&);
};

Some::Crap Some::Process(Crap& crap) { ... }

Grundsätzlich Crap erfordert keine innerhalb der Funktion Parameterliste und Körper aus dem gleichen Grund Scoping Sie nicht this-> den Zugriff auf Datenelemente und Elementfunktionen benötigen. Es ist implizit, weil es auf dem gleichen Umfang ist

Der Grund Rückgabetyp benötigt wird, ist einfach, weil der Parser des Rückgabetyp vor dem Methodennamen trifft und kann nicht (ist nicht erforderlich?) Deduce Umfang in diesem Augenblick.

Die Frage Titel sagt: ‚Member-Funktion‘, aber Ihr Beispiel enthält keine Memberfunktion. Angenommen, Sie Some::Process nicht nur Process gemeint:

Der Klassenbereich für die Funktionsdefinition beginnt am (, nicht am {. Ich nehme an, die Argumentation ist genau so, dass Dinge wie diese können kürzer eingegeben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top