Klasse wird nicht gefunden



  • Ich habe zwei .cpp-dateien. In der einen steht eine Klassendefinition, die in der zweiten Datei verwendet werden soll. Ich schreibe also in die zweite Datei:

    _SWF6Header swfhead;
    

    um die Klasse initialisieren. Allerdings kommt mir g++ (Win32 mit DevCPP 5) mit folgender Fehlermeldung:

    30 D:\C++\SwiffDump SE\analyze.cpp
    `_SWF6Header' undeclared (first use this function)
    

    Es funktioniert nur, wenn ich die Klasse direkt in analyze.cpp einfüge. Ich frage mich nun aber, warum er die Klasse nicht kennt, obwohl Sie doch mit kompiliert und gelinkt wird. Ich bin in einem anderen Projekt genauso verfahren, da hat es geklappt (nur leider habe ich den Source-Code nicht mehr).

    MfG,
    Sean



  • Hast du keine Headerdatei mit der Klassendeklaration von _SWF6Header?



  • Wie meinst du das? Meinst du eine Headerdatei mit einer art Prototypen?

    Das einzige was ich habe ist eine Datei mit folgender Klasse:

    class _SWF6Header {
    // File header of Flash6-Files
    public:
    bitset<8> bsSigOne;
    bitset<8> bsSigTwo;
    bitset<8> bsSigThree;
    };

    Ich bin relativ neu in CPP, brauch ich ansonsten noch was, außer der eigentlichen Klasse?



  • Hier ein Beispiel mit einer einfachen Funktion. Mit der Klasse geht das analog. In den Header (h) nur die Prototypen, in die Implementationsdatei (cpp) die Funktionen.

    //funkt.h
    int Quadrat(int argument); 
    
    -------------------------------- 
    
    //funkt.cpp 
    #include "funkt.h"  
    
    int Quadrat(int argument)  
    {  
       return argument * argument;  
    } 
    
    -------------------------------- 
    
    //main.cpp 
    #include <iostream>  
    #include <conio.h> 
    #include "funkt.h"  
    using namespace std; 
    
    int main()  
    {  
      int eingabe;  
      cout << "Zahl eingeben: ";  
      cin >> eingabe;  
      cout << "Quadratzahl: " << Quadrat( eingabe );  
    
      getch();    
      return 0;  
    }
    


  • Muss ich dann also einen Klassen-Prototypen anlegen?
    Wie sähe der denn aus?



  • // .hpp
    
    class Foo {
    public:
       // Schnittstellen-Deklaration z.b.
       void bar ();
    private:
       // Meberdefinition z.B.
       int quer;
    };
    
    // .cpp
    
    void Foo::bar()
    {
       // Implementation
    }
    

Anmelden zum Antworten