Heim Backend-Entwicklung C++ C++-Syntaxfehler: Nicht-Member-Funktionen können diesen Zeiger nicht haben, wie geht man damit um?

C++-Syntaxfehler: Nicht-Member-Funktionen können diesen Zeiger nicht haben, wie geht man damit um?

Aug 22, 2023 am 08:38 AM
c++语法错误 非成员函数 this指针

In der C++-Programmierung ist der „this“-Zeiger ein sehr wichtiges Konzept. Es stellt die Adresse des aktuellen Objekts dar und ermöglicht nicht statischen Mitgliedsfunktionen den Zugriff auf die Mitgliedsvariablen und Mitgliedsfunktionen des aktuellen Objekts.

Bei der C++-Programmierung kann jedoch ein Fehler auftreten: Nicht-Member-Funktionen können diesen Zeiger nicht haben. Dieser Fehler liegt daran, dass die Verwendung dieses Zeigers in einer Nicht-Mitgliedsfunktion im Wesentlichen bedeutet, auf die Mitgliedsvariablen oder Mitgliedsfunktionen des aktuellen Objekts zuzugreifen, die Nicht-Mitgliedsfunktion jedoch keine Instanz des Objekts hat, sodass ein Syntaxfehler auftritt.

Wie gehe ich also mit diesem Fehler um?

Eine einfache Lösung besteht darin, Nicht-Mitgliedsfunktionen in Mitgliedsfunktionen umzuwandeln. Mitgliedsfunktionen verfügen über diese Zeiger, sodass dieses Problem durch die Konvertierung von Nicht-Mitgliedsfunktionen in Mitgliedsfunktionen gelöst werden kann. Der Konvertierungsprozess ist sehr einfach. Sie müssen lediglich den Klassennamen und den Bereichsparser „::“ vor dem Funktionsnamen in der Funktionsdeklaration hinzufügen. Es gibt beispielsweise eine Nicht-Member-Funktion f in Klasse A, und Sie möchten sie nun in eine Member-Funktion umwandeln. Sie können Folgendes tun:

class A {
public:
    void f() {
        // ...
    }
};
Nach dem Login kopieren

Eine andere Lösung besteht darin, die Adresse des aktuellen Objekts über Parameter für den Zugriff zu übergeben Mitgliedsvariablen und Mitgliedsfunktionen. In Nicht-Mitgliedsfunktionen können Sie die Adresse des aktuellen Objekts als Parameter übergeben und Zeiger verwenden, um Mitgliedsvariablen und Mitgliedsfunktionen in der Funktion zu bedienen. Zum Beispiel:

class A {
public:
    int x;
    void f(int y) {
        x = y;
    }
};

void g(A* a) {
    a->f(10);
}

int main() {
    A a;
    g(&a);
    cout << a.x << endl; //Output: 10
    return 0;
}
Nach dem Login kopieren

In diesem Beispiel definieren wir eine Klasse A, die eine Mitgliedsvariable x und eine Mitgliedsfunktion f hat. In der Nicht-Mitgliedsfunktion g übergeben wir den Zeiger über den Parameter auf das aktuelle Objekt und rufen dann die Mitgliedsfunktion f in der Funktion auf, um die Mitgliedsvariable x zu bedienen.

Generell ist der „this“-Zeiger ein sehr wichtiges Konzept, insbesondere in der C++-Programmierung. Wenn der Fehler auftritt, dass Nicht-Member-Funktionen diese Zeiger nicht haben können, können Sie versuchen, die Funktion in eine Member-Funktion umzuwandeln oder die Adresse des aktuellen Objekts über Parameter zu übergeben, um Member-Variablen und Member-Funktionen zu bedienen.

Das obige ist der detaillierte Inhalt vonC++-Syntaxfehler: Nicht-Member-Funktionen können diesen Zeiger nicht haben, wie geht man damit um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor „,' Token'? Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor „,' Token'? Aug 25, 2023 pm 07:30 PM

Wie behebt man den C++-Syntaxfehler: „expectedprimary-expressionbefore“, „token“? Übersicht: Beim Schreiben von C++-Code treten manchmal verschiedene Fehler auf. Einer davon ist „expectedprimary-expressionbefore‘,‘token“ (fehlender primärer Ausdruck vor dem Komma). Dieser Fehler wird normalerweise während des Kompilierungsprozesses erkannt und fordert uns auf, a

Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor „.' Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor „.' Aug 26, 2023 pm 07:43 PM

Wie behebt man den C++-Syntaxfehler: 'expectedprimary-expressionbefore'.'token'? Beim Schreiben von Programmen in C++ stoßen wir manchmal auf verschiedene Syntaxfehler. Einer der häufigsten Fehler ist „expectedprimary-expressionbefore“.‘token‘. Wenn wir in unserem Code eine falsche Syntax verwenden, um auf Mitglieder einer Klasse zuzugreifen, meldet der Compiler diesen Fehler.

Wie behebt man den C++-Syntaxfehler: „Erwarteter Initialisierer vor „('-Token'? Wie behebt man den C++-Syntaxfehler: „Erwarteter Initialisierer vor „('-Token'? Aug 26, 2023 pm 09:37 PM

So lösen Sie den C++-Syntaxfehler: 'expectedinitializerbefore'('token'? Bei der C++-Programmierung treten häufig verschiedene Kompilierungsfehler auf. Einer der häufigsten Fehler ist 'expectedinitializerbefore'('token'. In diesem Artikel gehen wir auf die Ursache dieses Fehlers ein wird im Detail besprochen und eine Lösung bereitgestellt. Schauen wir uns zunächst ein einfaches Beispiel an: #include&l.

Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor ‚*'-Token'? Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor ‚*'-Token'? Aug 25, 2023 pm 07:16 PM

So lösen Sie C++-Syntaxfehler: 'expectedprimary-expressionbefore'*'token' Beim Erlernen der C++-Programmierung stoßen wir häufig auf verschiedene Syntaxfehler. Einer der häufigsten Fehler ist 'expectedprimary-expressionbefore'*'token'. Dieser Fehler tritt normalerweise bei der Verwendung von Zeigern auf, hauptsächlich weil wir irgendwo eine falsche Syntax verwenden oder vergessen

Wie behebt man den C++-Syntaxfehler: 'erwartet ')' vor '&' Token'? Wie behebt man den C++-Syntaxfehler: 'erwartet ')' vor '&' Token'? Aug 26, 2023 pm 08:13 PM

Wie behebt man den C++-Syntaxfehler: 'erwartet')'before'&'token'? Bei der C++-Programmierung treten häufig verschiedene Syntaxfehler auf. Einer der häufigsten Fehler ist: „expected‘)‘before‘&‘token“. Dieser Fehler tritt normalerweise in der Parameterliste einer Funktion oder Methode auf und weist darauf hin, dass der Compiler die fehlende rechte Klammer vor einer Variablen oder einem Typ nicht verstehen kann. Im Folgenden werde ich detailliert beschreiben, wie dieser Fehler behoben werden kann, und Code bereitstellen

Wie behebt man den C++-Syntaxfehler: „unqualifizierte ID vor ‚ Wie behebt man den C++-Syntaxfehler: „unqualifizierte ID vor ‚ Aug 26, 2023 pm 10:46 PM

Wie behebt man den C++-Syntaxfehler: „expectedunqualified-idbefore“ &lt; „token“? Bei der Entwicklung von C++ stoßen wir häufig auf verschiedene Fehler. Einer der häufigsten Fehler ist „expectedunqualified-idbefore“&lt;‘token‘. Dieser Fehler bedeutet normalerweise, dass irgendwo ein Bezeichner fehlt, der Compiler jedoch das Symbol „&lt;“ gefunden hat. So ein Fehler

Wie behebt man den C++-Syntaxfehler: „Erwarteter Initialisierer vor „ Wie behebt man den C++-Syntaxfehler: „Erwarteter Initialisierer vor „ Aug 25, 2023 pm 06:30 PM

Wie behebt man den C++-Syntaxfehler: 'expectedinitializerbefore'&lt;'token'? Bei der C++-Programmierung treten häufig verschiedene Fehler auf. Einer der häufigsten Fehler ist „expectedinitializerbefore‘&lt;‘token“. Dieser Fehler tritt normalerweise bei der Verwendung von Vorlagenklassen oder Vorlagenfunktionen auf und Sie müssen einige spezifische Syntaxdetails beachten. In diesem Artikel besprechen wir die Ursache dieses Fehlers

Wie behebt man den C++-Syntaxfehler: 'erwartet ':' vor ';' Wie behebt man den C++-Syntaxfehler: 'erwartet ':' vor ';' Aug 25, 2023 pm 03:42 PM

So lösen Sie den C++-Syntaxfehler:'expected':'before';'token'C++ ist eine leistungsstarke und flexible Programmiersprache, aber manchmal können Syntaxfehler auftreten, wie zum Beispiel "expected':'before';'token" " . Diese Fehlermeldung wird normalerweise durch einen Syntaxfehler verursacht und der Compiler kann die korrekte Syntaxstruktur nicht erkennen. In diesem Artikel behandeln wir einige häufige Gründe, warum etwas schief geht, und wie man sie beheben kann. Fehler beim Referenztyp

See all articles