JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

auf Funktionen und Klassen zugreifen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Rodney
Junior JLI'ler



Anmeldedatum: 24.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 13:52    Titel: auf Funktionen und Klassen zugreifen Antworten mit Zitat

Hallo Leute,
ich bin grade in Kapitel 19 des Buches.
Wie kann ich in anderen FUnktionen und Quellcodedateien z.B. auf die Funktion Render(); zugreifen oder auf Klassen wie das DDraw Objekt??

Danke im Vorraus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 14:04    Titel: Antworten mit Zitat

Auf Objekte von Klassen kannst du so zugreifen:

main.cpp
Code:
DDraw DDrawObjekt;


DDraw.h<-- Deine DDraw-Klasse
Code:
//Nach der definition der Klasse
extern DDraw DDrawObjekt;


Jetzt musst du in den Dateien in denen du dein DDraw-Objekt brauchst nur noch DDraw.h includen und dann kannst du ganz normal drauf zugreifen:

Code:
DDraw.Init()
...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 14:04    Titel: Antworten mit Zitat

einfach so:

main.cpp

int zahl;


in einer anderen datei.cpp

extern int zahl;
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 14:06    Titel: Antworten mit Zitat

Hab ich doch oben schon geschrieben Confused
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 14:29    Titel: Antworten mit Zitat

Wenn du sehen würdest, haben wir beide das um 13:04 gepostet. Also zeitgleich. Du wirst das wohl nur ein paar Sekundne schneller abgeschickt haben...Wink
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Rodney
Junior JLI'ler



Anmeldedatum: 24.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 15:01    Titel: Antworten mit Zitat

ich bekomme dann immer folgenden Fehler:

Code:
directdrawclass.h(36) :  error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'DDrawObjekt'
directdrawclass.h(36) : fatal error C1004: Unerwartetes Dateiende gefunden



meine DirectDrawClass.h sieht jetzt so aus:

Code:
#include <ddraw.h>


class DirectDrawClass
{

public:

    DirectDrawClass(void);
    ~DirectDrawClass();
   
    BOOL Init(HWND hWnd);

    // Hintergrund löschen
    void Clear(int Color);

    void Flip(void);

    // Zeiger auf den Hintergrundpufferzurückgeben, damit andere Objekte zeichnen können
    LPDIRECTDRAWSURFACE7 GetBuffer(void) { return lpDDSBackBuffer; }

    // Funktion um eine Oberfläche anzulegen, als Grundlage dient eine Bitmap-Datei
    LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPCTSTR File, int dWidth, int dHeight);



private:
    // Zeiger auf das DirectDraw Interface
    LPDIRECTDRAW7 lpDD7;
    // Zeiger auf die primäre Oberfläche
    LPDIRECTDRAWSURFACE7 lpDDSPrimary;
    // Zeiger auf den Hintergrundpuffer
    LPDIRECTDRAWSURFACE7 lpDDSBackBuffer;
   extern DDrawObjekt DDrawObjekt;
};
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 15:08    Titel: Antworten mit Zitat

Also ich weiß nicht, ob man extern auch lokal definieren kann, schon gar private (?), aber probiers mal, indem du dein "extern" Global (also ueber alle Definitionen unter den Includes) in deiner CPP-Datei definierst wo du's brauchst?

Siehe noch mal Milleniums Post oben "Datei.CPP"... Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Rodney
Junior JLI'ler



Anmeldedatum: 24.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 19:20    Titel: Antworten mit Zitat

nee das funktioniert auch nicht...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 20:52    Titel: Antworten mit Zitat

ich glaub da sollte mal einer so schlau sein und auch in der anderen cpp datei erstmal den datentyp bekannt machen...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Rodney
Junior JLI'ler



Anmeldedatum: 24.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 21:07    Titel: Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:
ich glaub da sollte mal einer so schlau sein und auch in der anderen cpp datei erstmal den datentyp bekannt machen...


wie darf man das jetzt verstehen?? was habe ich falsch gemacht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 21:53    Titel: Antworten mit Zitat

Code:
#include <ddraw.h>

_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 24.09.2003, 22:22    Titel: Antworten mit Zitat

Hmmm ich denke was Millenium dir mit seiner Minimalistischen Art sagen will (ned boese nehmen Millenium Wink), ist dass du deine DDrwaObjekt includieren solltest, damit dein extern weiß, was du haben willst.

Oder?? Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 25.09.2003, 06:25    Titel: Antworten mit Zitat

ja genau.

main.cpp
#include "ddrawclass.h"

ddrawclass eineKlasse;


ander datei.cpp
#include "ddrawclass.h"

extern ddrawclass eineKlasse;
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Rodney
Junior JLI'ler



Anmeldedatum: 24.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 25.09.2003, 11:52    Titel: Antworten mit Zitat

Danke erstmal für eure Hilfe!

ich hab das jetzt so gemacht wie ihr es gesagt habt, meine neue Objektklasse (noch ganz am Anfang) sieht so aus:

Code:
#include "DirectDrawClass.h"

#include "variablen.h"

extern DirectDrawClass DDrawObjekt;
class Objekt
{
   
   int x;
   int y;
   int i; // Geschwindikeit

   // Typ 1 : Boot

   void Erstellen (int Typ)
   {
   if (Typ == 1)
   {
   
      

   }

   }


   void Bewegen(void)
   {
      
      x = x + i;
      DDrawObjekt.GetBuffer()->BltFast(x,y,Boot,NULL,DDBLTFAST_SRCCOLORKEY); 

   }


ich bekomme jetzt aber immer nur noch Fehlermeldunge z.B. mit dem Surface "boot" was ich im Hauptteil (main.cpp) deklariert habe...
Code:
error C2065: 'Boot' : nichtdeklarierter Bezeichner


was muss ich tun damit ich alles aus dem Hauptteil verwenden kann?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 25.09.2003, 12:46    Titel: Antworten mit Zitat

Was is denn Boot??? Dein Compiler kann ja nich wissen was Boot ist ohne das du es ihm sagst.

@TheMillenium:
Auf die Uhrzeit hab ich gar nich geschaut Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum