Globale Funktion aufrufen

eeemoh

Mitglied
Hi Leute,

ich habe mal eine kleine Frage, die mir selbst sehr banal vorkommt, bisher hat mir Google aber noch keine Antwort geliefert.
Ich habe eine kleine Klasse geschrieben, die mir als .NET ge-/verwöhntem den Umgang mit Sockets ein klein wenig erleichtert. Darin habe ich jetzt Methoden, die teilweise dieselbe Sig habe wie die normalen Winsock2-Funktionen und eigentlich auch so heißen sollten. Jetzt habe ich aber das Problem, dass ich die Funktionen ausserhalb nicht mehr aufrufen kann, solange meine Methoden genauso heißen.
Ich habe das Problem bisher so gelöst, dass ich die Methodennamen einfach groß geschrieben habe und ihnen ein c als Präfix vorangestellt habe, was ich aber eigentlich nicht so toll finde. Wäre klasse, wenn mir jemand beschreiben könnte, wie ich eine globale Funktion ausserhalb der Klasse aufrufen könnte, die eben denselben Namen und dieselbe Sig hat, wie eine Methode in der Funktion.

Grüße, Paul
 
Hi.
Darin habe ich jetzt Methoden, die teilweise dieselbe Sig habe wie die normalen Winsock2-Funktionen und eigentlich auch so heißen sollten. Jetzt habe ich aber das Problem, dass ich die Funktionen ausserhalb nicht mehr aufrufen kann, solange meine Methoden genauso heißen.
Ich habe das Problem bisher so gelöst, dass ich die Methodennamen einfach groß geschrieben habe und ihnen ein c als Präfix vorangestellt habe, was ich aber eigentlich nicht so toll finde. Wäre klasse, wenn mir jemand beschreiben könnte, wie ich eine globale Funktion ausserhalb der Klasse aufrufen könnte, die eben denselben Namen und dieselbe Sig hat, wie eine Methode in der Funktion.
Dazu verwendet man den "scope resolution operator":
C++:
int foo(); // globale Funktion

namespace N {
  int foo();
}

class A {
public:
  int foo();

  void bar() {
    ::foo();     // globale Funktion aufrufen
    this->foo(); // Methode aufrufen
    foo();       // Methode aufrufen
    N::foo();    // Funktion im Namensraum N aufrufen
  }
};
Gruß
 
Zuletzt bearbeitet:
Zurück