Fehler: Mitgliedsfunktion kann nicht ohne Objekt in C++ aufgerufen werden

Naila Saad Siddiqui 15 Februar 2024
  1. Beheben Sie den Fehler: Member-Funktion kann nicht ohne Objekt aufgerufen werden in C++
  2. Verwenden Sie eine Instanz der Klasse, um auf die Elementfunktionen zuzugreifen
  3. Verwenden Sie statische Elementfunktionen
Fehler: Mitgliedsfunktion kann nicht ohne Objekt in C++ aufgerufen werden

Dieser Artikel beschreibt den häufig auftretenden Fehler cannot call member function without object bei der objektorientierten Programmierung mit C++. Darüber hinaus bietet es auch mögliche Korrekturen für den Fehler.

Beheben Sie den Fehler: Member-Funktion kann nicht ohne Objekt aufgerufen werden in C++

Ein häufiger Fehler in C++ tritt häufig bei der Arbeit in der objektorientierten Programmierung auf und besagt, dass Memberfunktion ohne Objekt nicht aufgerufen werden kann. Die Ursache dieses Fehlers liegt darin, dass Sie eine Mitgliedsmethode der Klasse aufrufen, ohne die Klasse zu instanziieren.

Jede Klasse hat eine Reihe von Datenmembern und einige Memberfunktionen. Wir müssen das Klassenobjekt erstellen, um auf die Mitgliedsmethoden oder -funktionen zuzugreifen, und dann die Methoden mit diesem Objekt aufrufen/auf sie zugreifen.

Betrachten Sie den folgenden Code.

#include <iostream>
using namespace std;
class Rectangle {
 private:
  int length = 5;
  int width = 8;

 public:
  double getArea() { return length * width; }
};
int main() { cout << "Area: " << Rectangle::getArea() << endl; }

Dieser Code generiert die folgende Ausgabe.

Memberfunktion kann nicht ohne Objekt aufgerufen werden

Zeile #16 im obigen Code-Snippet versucht, die Methode getArea() unter Verwendung des Klassennamens aufzurufen. Auf alle nicht statischen Mitglieder einer Klasse darf nur über ein Objekt der Klasse zugegriffen werden; daher erzeugt die Zeile den Fehler.

Verwenden Sie eine Instanz der Klasse, um auf die Elementfunktionen zuzugreifen

Der Fehler kann behoben werden, indem die Funktion/Methode mit einem Objekt der Klasse wie folgt aufgerufen wird:

int main() {
  Rectangle r;
  cout << "Area: " << r.getArea() << endl;
}

Dadurch erhalten Sie die richtige Ausgabe.

Area: 40

Verwenden Sie statische Elementfunktionen

Statische Elementfunktionen sind die Funktionen einer Klasse, die kein Objekt benötigen, um sie aufzurufen. Sie können mit dem Bereichsauflösungsoperator :: direkt mit dem Klassennamen aufgerufen werden.

Bei der Verwendung der statischen Elementfunktionen müssen bestimmte Einschränkungen beachtet werden. Eine statische Memberfunktion kann nur auf die statischen Datenmember der Klasse zugreifen und nur die anderen statischen Memberfunktionen aufrufen.

Sehen wir uns das folgende Beispiel an, in dem die Lösung für den Fehler Elementfunktion kann nicht ohne Objekt aufgerufen werden diskutiert wird.

#include <iostream>

using namespace std;

class Rectangle {
 private:
  int length = 5;
  int width = 8;

 public:
  double getArea() { return length * width; }
  static void getShapeName() { cout << "Hello, I am a Rectangle." << endl; }
};
int main() {
  Rectangle r;
  cout << "Area: " << r.getArea() << endl;
  Rectangle::getShapeName();
}

Dies ergibt die folgende Ausgabe.

Area: 40
Hello, I am a Rectangle.

Verwandter Artikel - C++ Error