friend-Klasse plötzlich unbekannt



  • Hallo,

    ich hab hier folgenden Code (vereinfacht):

    // D3DDevice.h:
    class CD3DDevice
    {
    // Einige Deklarationen
    };
    
    // Light.h:
    #include "D3DDevice.h"
    class CLight
    {
    friend CD3DDevice; // Das hier ist Zeile 9
    };
    

    Bekomme aber folgende Fehler:

    Light.h(9) : error C2433: 'CD3DDevice' : 'friend' bei der Deklaration von Daten nicht zulaessig
    Light.h(9) : error C2501: 'CD3DDevice' : Fehlende Speicherklasse oder Typbezeichner
    Light.h(9) : error C2244: 'CD3DDevice' : Funktionsueberladung kann nicht aufgeloest werden
    

    Was hab ich falsch gemacht? CD3DDevice ist doch ordnungsgemäß deklariert, oder?

    CD3DDevice enthält übrigens einige inline-Funktionen, die - wie es sich gehört - direkt im Header definiert werden. (falls das was ausmacht).

    mfg. Tubos



  • [cpp]
    friend class CD3DDevice; // Das hier ist Zeile 9
    [/cpp]



  • Danke, funktioniert!

    Dafür habe ich an einer anderen Stelle ein Problem mit genau derselben Klasse neu dazu bekommen. Ich verwende in einer inline-Methode, die in einem Header deklariert + definiert ist, eine Instanz der Klasse. Die Instanz ist ganz woanders definiert, die inline-Methode ruft nur eine Methode davon auf. Dabei bekomme ich folgenden Fehler:

    error C2027: Verwendung des undefinierten Typs "CD3DDevice"
    

    Obwohl D3DDevice.h ordnungsgemäß inkludiert ist.
    Ich habe mir provisorisch damit geholfen, dass ich die beiden betroffenen Funktionen nicht-inline gemacht habe, aber ich möchte schon dass es auch mit inline funktioniert 😉


Anmelden zum Antworten