Forward - Deklatation



  • Hi!

    Ist es legitim eine Klasse als Forward zu deklarieren?
    Oder würde man das anders lösen?

    FolgendeStruktur

    main.cpp (Hauptprog.)

    included "Giraffe.h" mit Klasse "Giraffe"

    included "Banenboot.h" mit Klasse "Bananenboot" die Attribute vom Typ Giraffe enthält.

    In "Bananenboot.h" ist

    class Giraffe;
    

    forwarded, damit der compiler net mault

    danke



  • Ist völlig i.O., wird sogar in Scott Meyers Buch empfohlen (oder war es Bjarne Stroustrup?). Weil so kannste dir das includieren aus performance-Gründen sparen.

    Wenn du #pragma once benutzt, ist es allerdings widerrum egal.



  • Es ist legitim, manchmal notwendig und auch oft erwünscht solche forward Declarationen zu machen.

    Es ist vor allem dann erwünscht, wenn man möglichst wenig Abhängigkeiten von anderen Headerdateien in Headerdateien haben möchte.



  • cool, danke für die schnellen Antworten 🙂

    nur leider bekomme ich nun in meinem Hauptprogramm für genau eben diese Klassen (also, ein Objekt davon) die Compilerfehlermeldung "Mehrdeutiges Symbol"

    was kann denn nu das sein? 😕



  • Benutzt Du VC++? Dann gib einfach den angegebenen Error-Code in deine MSDN-Hilfe ein, da wird dir geholfen!



  • Artchi schrieb:

    Benutzt Du VC++? Dann gib einfach den angegebenen Error-Code in deine MSDN-Hilfe ein, da wird dir geholfen!

    danke!

    das Problem war, dass das Objekt in einem Namespace definiert war, und durch den Forward wurde meine Klasse neu definiert, ohne NameSpace.
    So wusst er dann im Hauptprog nimmer, welche er nun nehmen soll..

    leider hilfts mir net, da ich den namespace ja brauche, auch in "banaenboot.h"

    schade 😞 ψ


Anmelden zum Antworten