Schlüsselwort extern (bei Erzeugung eines Objektes)



  • Hi

    Ich habe gerade entschieden wieder in die Programmierung einzusteigen (Hab vor ca. 1.5 Jahren aufgehört als mir DX9 zu komplex wurde). Nun habe ich einen alten Quellcode hervorgenommen um wieder einzusteigen.
    Ich verstehe den auch relativ gut, nur bei folgender Zeile weiss ich nicht was ich da genau gemacht habe.

    extern CD3D Direct3D;
    

    Ich lege also ein CD3D Objekt an. Aber wozu das Schlüsselwort extern?

    Hier noch die Klasse CD3D, vielleicht braucht ihr die um mir eine Antwort zu liefern:

    #include <d3d9.h>
    #include <d3dx9.h>
    
    class CD3D
    {
    public:
    	CD3D(D3DCOLOR ClearColor);
    	virtual ~CD3D();
    
    	void SetClearColor(D3DCOLOR ClearColor);
    	bool Init(HWND hwnd, bool Windowed);
    
    	void BeginScene();
    	void EndScene();
    	void CleanUp();
    	void CreateFont(LPCSTR pFontString);
    
    protected:
    	D3DCOLOR m_TextColor;
    	D3DCOLOR m_ClearColor;
    	LPDIRECT3D9 m_lpD3D;
    	LPDIRECT3DDEVICE9 m_lpD3DDevice;
    	D3DPRESENT_PARAMETERS PParams;
    	LPD3DXFONT m_lpD3DFont;
    };
    

    Wäre froh wenn ich da eine kurze Erklärung erhalte.
    Besten Dank

    Gruss



  • Ich glaub ich hab's. In der main Funkion definiere ich bereits ein Objekt:

    CD3D Direct3D(D3DCOLOR_XRGB(0,0x01,0x99));
    

    Und mit extern gebe ich an, dass ich kein neues Objekt will, sondern mit dem Bestehenden weiterarbeiten will?
    Stimmt das? Ist jetzt reine Spekulation meinerseits, aber sonts würde der compiler ja bestimmt meckern, weil ich 2 Objekte mit dem selben Namen habe.

    Gruss



  • Jo, Du deklarierst damit eine Variable, deren Definition sich in einer anderen Quelldatei befindet.


Anmelden zum Antworten