Die kanonische Form des Pimpl Idioms (von Herb Sutter "Exceptional C++") lautet wie folgt:Warum sollte ein pimpl als Struktur und nicht als Klasse deklariert werden?
class X
{
public:
/* ... public members ... */
protected:
/* ... protected members? ... */
private:
/* ... private members? ... */
struct XImpl;
XImpl* pimpl_; // opaque pointer to
// forward-declared class
};
Meine Frage ist, warum ist XImpl
als Struktur deklariert statt einer Klasse?
Es ist wenig sinnvoll, etwas zu verbergen, das bereits verborgen ist. Der Standardzugriff von 'private' für eine' class' gegenüber 'public' für eine' struct' scheint trivial zu sein. – WhozCraig
Es macht absolut keinen Unterschied (außer Ihr Compiler ist sehr sehr fehlerhaft). –
@WhozCraig Aber das ist eine Vorwärtsdeklaration. In diesem speziellen Fall macht das überhaupt keinen Unterschied. Es spart nicht einmal Tippen :-) – juanchopanza