2016-11-10 3 views
0

Wie greifen Sie auf eine Funktion von einer Klasse außerhalb dieser Klasse zu?Wie kann man von einer Klasse auf eine Funktion zugreifen?

Beispiel:

int main(int argc, char *argv[]) 
{ 
    class ImageLoading 
    { 

    void Loading() 
    { 
     cout << 5 <<endl; 
    } 

    }; 

Loading(); 

return 0; 
} 
+0

Sie ein Objekt der Klasse benötigt, darauf zuzugreifen, oder es statisch zu machen und die Klassennamen – P0W

+0

@ P0W zu verwenden ist: Hallo und willkommen zu Paketüberfluss! Sie haben den Bereich _comments_ gefunden, einen Bereich zum kritisieren, um Klärung anzufordern und Kämpfe mit Menschen zu führen.Wenn Sie die Frage beantworten möchten (dies bedeutet, eine Lösung für den Autor der Frage bereitzustellen), ist der richtige Ort dafür der _answer section_, den Sie unten finden können. Dann kann Ihre Antwort wie üblich überprüft werden. Danke und viel Spaß auf der Seite! –

+0

@LightnessRacesinOrbit Ich dachte, Benutzer wurden ermutigt, nutzlose Ruf seit den letzten 3 Jahren und 11 Monaten nicht zu farmen. Aber Punkt bemerkt, ich respektiere immer 200K + Benutzer. – P0W

Antwort

3

eine Standardfunktion in einer Klasse ist eine Instanz der Klasse definiert ist. Es kann nur für eine Instanz verwendet werden, d. H. Für ein erstelltes Objekt. Um das zu tun, müssen Sie eine ImageLoading Klasse Instanz erstellen:

ImageLoading instance; 
instance.Loading(); 

Es ist möglich, auch Funktionen der Klasse zugeordnet zu schaffen und nicht auf seine Instanzen. Dafür Sie das Schlüsselwort static in der Funktionsdefinition hinzufügen müssen

static void Loading() 
{ 
    cout << 5 << endl; 
} 

Dann, es zu benutzen, müssen Sie sagen, dass es die statische Klasse ist in ImageLoading definiert. Die Syntax ist ClassName::MethodName() so:

ImageLoading::Loading(); 
2

Sie haben einfach eine Instanz der Klasse erstellen, und es dann mit ihm nennen.

ImageLoading image; 

image.Loading(); 
0

Klasse außerhalb des Hauptverfahrens definiert: Nach dem richtigen Weg ist, um dies zu tun:

class ImageLoading 
    { 
    void Loading() 
     { 
     cout << 5 <<endl; 
     } 
    }; 

int main(int argc, char *argv[]) 
{ 
    ImageLoading Obj; 
    Obj.Loading(); 
    return 0; 
} 
1

Zugriff auf die Funktion einer Klasse außerhalb der Klasse 1 von 2 erfordert die Dinge, die sind:

  1. Eine Instanz der Klasse.
  2. Eine static Funktion.

Lassen Sie uns schnell über eine Klasse sprechen. Wenn Sie einen class Standard-Zugriffsmodifikator für Funktionen oder Variablen machen, ist private: standardmäßig nur die Klasse selbst kann es nennen, gibt es einige andere Klassen, die zugreifen können, aber das ist zu dieser Zeit nicht wirklich relevant. In der gestellten Frage ist die Funktion Loading privat. Dies bedeutet, dass es nur innerhalb der Klasse aufgerufen werden kann. Selbst mit einer Instanz der Klasse können Sie sie nicht von main aufrufen. Wenn Sie die Funktion ohne eine Instanz des Objekts aufrufen möchten, muss es static und public sein.

Beispiel mit Ihrem Code:

class ImageLoading 
{ 
public: 
    static void Loading() 
    { 
     cout << 5 << endl; 
    } 

}; 

int main(int argc, char *argv[]) 
{ 

    ImageLoading::Loading(); 

    return 0; 
} 

Der Nachteil einer static Funktion, ist, dass sie nicht auf eine Instanz einer Klasse gehört also, wenn Sie Klassenvariablen, die nicht statisch sind, die statische Funktion kann sie ohne eine Instanz dieses Objekts nicht ändern.

Hier ist eine gute Quelle mit einigen Beispielen von Access Modifiers in C++: http://en.cppreference.com/w/cpp/language/access

Verwandte Themen