probleme mit enum



  • habe folgendes problem
    habe einen enum typ geschrieben
    enum Typ
    {
    eins, zwei, drei
    };
    will jezt diesen typ einer funktion als parameter übergeben
    //deklaration
    void funktion(Typ eintyp);

    //definition
    void funktion(Typ eintyp)
    {
    .
    .
    .
    }
    habe nun folgendes problem
    wird kompiliert
    der linker schmeisst eine LNK2001 nichtaufgelöstes externes symbol
    kann ich den das irgendwie hin bekommen oder soll ich die idee aufgeben

    Danke in voraus 😕 😡



  • liegt nicht an der enum



  • Sehr merkwürdig.
    Hast du vielleicht den enum in einer CPP Datei deklariert, aber die Funktionsdefinition in einer anderen?

    Es ist anzuraten, die Typ-Deklaration in einen Header zu schreiben, und sowohl vor dem Funktionsprototypen, als auch der eigentlichen Funktion den Header eingebunden zu haben.

    Was genau sagt den der Linkerfehler was fehlt ?



  • die enum steht in dem header
    der linkfehler ist recht allgemein werd draus nicht schlau



  • *lol*

    Vielleicht postest du ihn dann aber doch mal.
    Wenn nicht, gute nacht.



  • hat wirklich nicht an enum gelegen
    ich habe klassen in einer header datei deklariert
    und in einer quellcode datei die funktionen inline definiert
    habe jezt die ganzen funktionen gleich im header definiert

    jezt funktioniert es
    danke für die hilfe 🙂

    ps. wie ist das eigentlich möglich das die definition auserhalb des h solche
    probleme verursacht ????



  • ingomar77 schrieb:

    und in einer quellcode datei die funktionen inline definiert

    Das ist ein Widerspruch in sich. Inline-Funktionen müssen in jeder Übersetzungseinheit definiert sein, in der sie benutzt werden. Wenn du sie nur in eine einzige Quellcodedatei steckst, beschwert sich der Linker.



  • aber für was giebt es dann den befehl "inline"
    wenn man klassenfunktionen innerhalb von klassen definiert sind sie ja
    automatisch inline oder ??



  • "In der Headerdatei" bedeutet nicht gleich "innerhalb der Klassendeklaration".

    Manche benutzen auch Dateien, die sie am Ende der Headerdatei einbinden, und nennen die dann .inl oder so.


Anmelden zum Antworten