Problem mit Enum



  • Hallo zusammen,

    ich habe mir in einer utils.cpp eine Enum erstellt und diese versuche ich in einer anderen cpp zu benutzen, aber ich bekomme eine Compilerfehler. Wo ist das Problem?
    Hier mal ein bischen Code:

    utils.h

    #ifndef UTILS_H
    #define UTILS_H
    
    #include <string>
    
    enum FileType;
    
    FileType GetFileType(const std::string & filename);
    
    #endif
    

    utils.cpp

    #include "utils.h"
    
    enum FileType
    {
    	UNKNOWN = -1,
    	TXT,
    	DOC
    }; // enum FileType
    
    FileType GetFileType(const std::string & filename)
    {
    	FileType retVal = FileType::UNKNOWN;
    	return retVal;
    } // GetFileType
    

    test.cpp

    #include "utils.h"
    
    void ImportFile(const std::string & filename)
    {
    	switch (GetFileType(filename))
    	{
    	case FileType::UNKNOWN:
    		std::cout << "UNKNOWN\n";
    		break;
    	};
    }
    

    Gruß
    Patrick



  • Jetzt wäre es durchaus hilfreich, den Compilerfehler zu kennen (und interpretieren zu können) 😉 Aber ich würde mal sagen, du solltest die Definition des enums in den Header packen.

    PS: Und um an die einzelnen enum-Werte zu kommen, brauchst du keinen Scope-Operator 😉



  • Schönen Dank, jetzt funktioniert es (enum Definition im Header). Also muss man enums immer im Header definieren?

    Gruß
    Patrick



  • Nicht unbedingt - du mußt sie nur so definieren, daß jeder Anwender sie (inklusive der konkreten enum-Werte) sehen kann 😉 (das heißt in den meisten Fällen gehören sie wirklich in den Header, aber es gibt natürlich auch Ausnahmen)


Anmelden zum Antworten