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