forward-deklarierte Klasse als friend -> linker-Fehler



  • Ich habe eine Klasse, die nur durch eine Factory instanziiert werden darf

    Das sieht so aus:

    namespace akt
    {
      class Id_Fab;  //forward-Deklaration
    }
    
    namespace akt
    {
        /// einfache Text-Id
      class TextId
      {
      private:
    
        friend class Id_Fab;
    
        TextId( const std::string& value);
      public: //...
    };
    

    Das compiliert wunderbar, liefert aber einen linker-Fehler:

    error LNK2019: Nicht aufgelöstes externes Symbol 
    '"[b]public:[/b] __thiscall akt::id_impl::TextId::TextId(
    class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ...
    

    D.h. er findet den Ctor von TextId nicht. Komisch daran ist, dass das externe symbol public sein soll!?

    Mach ich keine forward-Deklaration sondern includiere den Header, funzt das ganze.

    Mach ich was falsch? Hab VC++7.1


Anmelden zum Antworten