In diesem Artikel befassen wir uns mit dem Dilemma der Implementierung von Inline-Member-Funktionen in .cpp-Dateien trotz der Platzierungskonvention sie in Headern.
Das Problem entsteht durch die zirkuläre Einbindung, wie die folgenden Codeausschnitte zeigen:
<code class="cpp">// File A.h #include "B.h" class A { B b; };</code>
<code class="cpp">// File B.h #include "A.h" // forward declaration class B { inline A getA(); };</code>
Aufgrund der zirkulären Abhängigkeit muss die Implementierung von getA() erfolgen in B.cpp platziert werden:
<code class="cpp">// File B.cpp #include "B.h" #include "A.h" inline A B::getA() { return A(); }</code>
Wird der Compiler Inline getA?
Nein, es sei denn, die Verwendung von getA() erfolgt innerhalb von B.cpp selbst.
Bedeutung von Inline-Schlüsselwörtern
Das Inline-Schlüsselwort in der Definition außerhalb des Klassenkörpers ist am wichtigsten.
Alternative Möglichkeiten zur Inline-Definition Mitgliedsfunktionen in .cpp-Dateien
Leider gibt es keinen alternativen Ansatz zum Platzieren der Definition einer Inline-Mitgliedsfunktion in ihrer .cpp-Datei. Der Standard erfordert, dass der Compiler die Funktionsdefinition überall dort sieht, wo sie aufgerufen wird.
Das obige ist der detaillierte Inhalt vonKönnen Sie in CPP-Dateien definierte Mitgliedsfunktionen integrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!