C ++ Fehler Eine nicht statische Elementreferenz muss relativ zu einem bestimmten Objekt sein

C ++ Fehler Eine nicht statische Elementreferenz muss relativ zu einem bestimmten Objekt sein
Heute werden wir einen Fehler diskutieren, der aufgrund mangelnder Praxis eines Programmierers auftreten kann, wenn er das Konzept statischer und nicht statischer Funktionen mischt. Lassen Sie uns zunächst nicht statische Mitgliedsfunktionen untersuchen. Dies sind die Art von Funktionen, die im Mitgliedsbereich einer Klasse einer Klasse ohne statische Spezifizierung deklariert werden. Für die nicht statischen Mitglieder gibt es eine besondere Methode für die Erklärung. Wenn wir in C ++ eine Funktion jeder Klasse aufrufen müssen, können wir sie aufrufen, indem wir ein Objekt erstellen. Wenn es sich. Wenn es sich um die nicht statische Funktion handelt, gibt es einen Fehler, der „Fehler ein nicht statischer Elemente-Referenz in Bezug auf ein bestimmtes Objekt sein muss“.

Manchmal wird es hektisch, diese Art von Fehler anzugehen, wenn die neuen Programmierer eine nicht statische Funktion verwenden. Aber sobald sie sich damit vertraut machen, wird es einfach, diese Fehler zu lösen. Um diesen Fehler zu beheben, gibt es zwei Methoden. Die erste besteht darin, die Funktion in die statische Funktion zu ändern und sie einfach mit der Aufrufmethode "class_name :: function_name" aufzurufen. Oder die zweite Methode, das heißt, wir müssen ein Objekt dieser Klasse erstellen und dann den Objektnamen verwenden, können wir die Funktion mit dem Namen „class_Object.Funktionsname".

Syntax:

Für diesen Fehler gibt es keine angegebene Syntax, da es sich nicht um einen Teil des Code handelt. Es handelt sich um den Kompilierungszeitfehler, der aufgrund von Fehler im Code auftreten kann.

Fehler: ohne Objekt kann die Funktion der Mitgliedsfunktion nicht aufrufen

Das obige gezeigte ist ein Bild davon, wie der Fehler aussieht.

Beispiel # 01:

Jetzt werden wir ein Beispiel durchführen, um zu überprüfen, wie dieser Fehler verursacht wird und wie diese Art von Fehler behoben werden kann. Bevor wir zu unserem Hauptcode wechseln, wo der Fehler auftritt. Danach haben wir ein Klassenobjekt mit dem Namen "my_Object" erstellt. In dieser Klasse haben wir ein statisches Mitglied namens "Display ()" und auch eine nicht statische Mitgliedsfunktion "show ()" deklariert, die "display ()" und auch eine nicht statische Mitgliedsfunktion deklariert haben "show ()".

Außerhalb der Klasse haben wir beide Funktionen mit der Klasse "My_Object" aufgerufen. In der Member -Funktion display () haben wir die Ausführungsnachricht für die Anzeige () -Methode gedruckt. Und in der methode ()) haben wir den Compiler angewiesen, die Ausführungsnachricht für die Show () -Methode zu drucken. Auf dem Weg zu unserer Hauptfunktion, bei der wir beide Funktionen mithilfe der statischen Mitgliederaufrufmethode aufrufen, die der Name der Klasse ist, dann die Doppelkolons zusammen mit dem Methodennamen. In unserem Fall sieht es aus wie "my_Object :: display ();. Wir haben unsere show () -Funktion angerufen und den Nullwert zurückgegeben. Wir werden nun den Code ausführen.

#enthalten
Verwenden von Namespace STD;
Klasse my_object
öffentlich:
statische void display ();
void show ();
;
void my_object :: display ()
Cout << "display() method executed" << endl;

void my_object :: show ()
Cout << "Show() method executed" << endl;

int main ()
my_Object :: display ();
my_Object :: show ();
Rückkehr 0;

Nachdem wir unseren Code ausgeführt hatten. Der aufgetretene Fehler ist auf den Funktionsaufruf zurückzuführen. Jetzt werden wir diesen Fehler mithilfe der genauen Möglichkeit, die nicht statische Funktion aufzurufen, beheben.

Wie im folgenden Snippet gezeigt, haben wir den Funktionsaufruf durch den richtigen ersetzt, indem wir zuerst ein Objekt für diese Klasse erstellt haben. Mit diesem Objekt haben wir dann die Funktion unter Bezugnahme auf dieses Objekt "obj" bezeichnet. Jetzt führen wir den Code wieder aus.

Nachdem wir den Code erneut ausgeführt haben, haben wir beide Nachrichten beider Funktionen erfolgreich angezeigt.

Beispiel # 02:

Jetzt werden wir ein weiteres Beispiel implementieren, in dem wir eine nicht statische Funktion erstellen, in der wir eine Berechnung ausführen werden. Nachdem wir unsere Header-Datei aufgenommen haben, werden wir eine Klasse namens "Myclass" erstellen, in der wir ein statisches Mitglied namens "my_func ()" und ein nicht statisches Mitglied "add ()" deklariert haben. Außerhalb dieser Klasse haben wir beide Funktionen bezeichnet. In der Funktion add () führen wir die Zugabe von zwei Ganzzahlvariablen „A“ und „B“ durch, denen wir die Werte „2“ und „3“ zugewiesen haben und sie in einer ganzzahligen Variablen „C“ gespeichert haben. Am Ende werden wir die Summe beider Werte unter Verwendung der Anweisung „Cout“ drucken. In der zweiten Funktion my_func () zeigen wir einfach die Nachricht an, aus der sie angezeigt wird. Wenn wir nun in unsere Hauptfunktion eintauchen, bei der wir den Aufruf der statischen Methode verwenden, werden wir beide Funktionen aufrufen. Nachdem wir diese Methoden aufgerufen haben, werden wir den Code ausführen.

#enthalten
Verwenden von Namespace STD;
Klasse Myclass

öffentlich:
static int my_func ();
void add ();
;
void myclass :: add ()

int a = 2, b = 3;
int c = a+b;
std :: Cout <<"the sum of a and b is: "<< c << std::endl;

int myclass :: my_func ()

std :: Cout << "this is my_func() method" << std::endl;
Rückkehr 0;

int main ()
myclass :: my_func ();
myclass :: add ();

Unten ist die Fehlermeldung, die in unserem Ausgabeteil angezeigt wird, der angibt. Wie wir oben diskutiert haben, können wir kein nicht statisches Mitglied anrufen, ohne ein Objekt zu erstellen. Wir werden jetzt versuchen, diesen Fehler zu beheben.

In der angegebenen Abbildung haben wir den richtigen Weg geschrieben, ein nicht statisches Mitglied anzurufen. Wir haben zuerst ein Objekt für die Klasse erstellt, deren Funktion die Funktion aufgerufen wird. Wir haben das Objekt "obj" für "Myclass" deklariert, mit der wir diese Funktion nennen werden. Nach dem Erstellen des Objekts haben wir die Funktion mit der Funktion „OBJ) aufgerufen.add () ”“ und dann den Code ausführen.

Nach der Ausführung des Codes haben wir erfolgreich die Hinzufügung der Variablen berechnet, die wir in der Methode „Add ()“ durchgeführt haben.

Abschluss

In diesem Leitfaden haben wir den Kompilierungszeitfehler untersucht, der aufgrund des Funktionsaufrufs der nicht statischen Mitgliedsfunktion hauptsächlich auftritt. Dieser Fehler tritt hauptsächlich aufgrund des Missverständnisses des Codierers über die nicht statischen Mitglieder auf. Wir haben den Weg erklärt, diese Fehler zu beheben, indem wir mehrere Beispiele implementierten.