"class name" does not name a type



  • Hallo

    ich habe mir verschiedene Klassen programmiert und möchte in den Headerfiles und auch in den anderen gegenseitig auf diese zu greifen. Z.B.:

    #ifndef GMSH_FILE_H_
    #define GMSH_FILE_H_
    
    #include "MooNMD_file.h"
    #include "tetgen_file.h"
    #include "netgen_file.h"
    #include "vtk_file.h"
    #include <string>
    using namespace std;
    
    class gmsh_file{
    private:
    	string datei;
    public:
    	gmsh_file(string dateiname);
    	virtual ~gmsh_file();
    	string getDatei() const
    		{
    			return datei;
    		}
    	vtk_file convert_vtk();
    	MooNMD_file convert_MooNMD(int genauigkeit);
    	tetgen_file convert_tetgen();
    	netgen_file convert_netgen();
    };
    
    #endif /* GMSH_FILE_H_ */
    

    und

    #ifndef TETGEN_FILE_H_
    #define TETGEN_FILE_H_
    
    #include "vtk_file.h"
    #include "gmsh_file.h"
    #include <string>
    using namespace std;
    class tetgen_file {
    private:
    	string node_datei;
    	string ele_datei;
    public:
    	tetgen_file(string node_dateiname, string ele_dateiname);
    	virtual ~tetgen_file();
    	string getNodeDatei()
    	{return node_datei;
    	};
    	string getEleDatei(){return ele_datei;
    	};
    	[cpp]gmsh_file convert_gmsh();
    	vtk_file convert_vtk();
    
    	};
    
    #endif /* TETGEN_FILE_H_ */
    

    beim Kompilieren sagt er mir jetzt in der Klasse tetgen_file bei

    gmsh_file convert_gmsh();
    

    'gmsh_file' does not name a type;

    Dies ist bei einigen Assoziationen der Fall aber nicht bei allen, was es meiner Ansicht so komisch macht. Ich weis nicht woran das liegt. Die Implementierungen sind alle getestet und funktionieren. Ich würde mich über schnelle Hilfe freuen.
    LG Gebbi



  • Vorwärtsdeklarieren der Klasse.



  • Wenn zwei Klassen voneinander Gegenseitig abhängen, musst du forward-deklarationen nutzen. Das reicht auch um die Klasse als Funktionsparameter, oder Rückgabetyp zu nutzen, oder einen Pointer darauf zu erstellen. In deinem Fall also kein Problem. Schreib einfach statt #include "tetgen_file.h" class tetgen_file; , usw.



  • danke, hat mir geholfen. 🙂


Log in to reply