2017-12-05 3 views
-5
The below is my code design 
class D; 
class A { 
    D *d; 
    class B:public C { 
    somefunctions(); 
    } 
} 

class C { 
    //I need to use class D variables inside Class C 
} 

Was ich innerhalb der Klasse C zu tun für das Holen der Klasse D Variablen wird ungültig Verwendung von Incomplete ‚Class D‘ und Weiterleiten Erklärung ‚Klasse D‘ zu werfen. Die Sache ist, wir können die Klassenpositionen nicht verschieben. Brauchen Sie Hilfe, bitte geben Sie Anregungen mit Beispielen. Vielen Dank im Voraus für Ihre HilfeC++ unter Verwendung abgeleiteten Klassenvariable in Basisklasse

+1

'Need dringend Hilfe' Zeit con Probleme sind dein Problem, nicht unseres. Der Versuch, die Gemeinschaft unter Druck zu setzen, bringt Sie nirgends hin. – UKMonkey

+2

Sie haben C. C-Ingenieure und C++ - Ingenieure in Kneipen gekämpft. Am besten zieh sie nicht zusammen. (C) Ron 2017 – UKMonkey

Antwort

1

Die lange und kurze von Ihrem Problem dreht sich um Ihr Design ein bisschen wie Spaghetti. Es geht überall hin und man kann nicht einfach nur 1 Klasse gleichzeitig bearbeiten und verstehen, was es tun soll.

Um jede Funktion der Klasse D verwenden zu können oder eine zu erstellen, muss der Compiler wissen, welche Funktionen für diese Klasse verfügbar sind und wie groß sie ist. Aus diesem Grund ist es am einfachsten, die Implementierung der Klasse C in eine eigene cpp-Datei zu migrieren und dann die D-Kopfzeile an die Spitze zu setzen, um das kompilieren zu können. Wenn das keine Option ist, dann sollten Sie sich eine Menge Herzeleid ersparen und früher oder später umgestalten.

0

Eine Klassendefinition hängt von den Typen ihrer Unterobjekte ab. Wenn C ein Element vom Typ hat, muss vor C definiert werden. Wenn nach C definiert ist, darf C nicht von abhängen.

Typen hängen typischerweise nicht auf Funktionen, so dass, wenn eine Elementfunktion von C auf D abhängt, ist die Lösung einfach:

  • C definieren
  • D definieren
  • Definieren Sie die Elementfunktion C das ist abhängig von
Verwandte Themen