![]() |
C++/MFC: Zugriff trotz Protected
Code:
Wieso ist der Zugriff auf m_Test erlaubt? Sollte doch Protected sein!
class CTestPrivateView : public CView
{ protected: // Nur aus Serialisierung erzeugen CTestPrivateView(); DECLARE_DYNCREATE(CTestPrivateView) CString m_Test; // <- um diese Variable gehts // Attribute public: CTestPrivateDoc* GetDocument(); // Operationen public: .... }; void TestFunc( CTestPrivateView* pt) { pt->m_Test = "Herbert"; } void CTestPrivateView::OnDraw(CDC* pDC) { TestFunc( this); CTestPrivateDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen } Für die Lösung gibt es Extra-Respekt :-) |
Re: C++/MFC: Zugriff trotz Protected
Moin Bernhard,
das ist jetzt zwar nur Vermutung, und kein Wissen, aber... Wenn sich die beiden Abschnitte in der gleichen Datei befinden, kann der Protected Bereich auch "gesehen" werden. (gilt zumindest für Delphi) |
Re: C++/MFC: Zugriff trotz Protected
Zitat:
Das von Berhard Geyer gezeigte dürfte nur funktionieren, wenn die Klassendeklaration folgede Zeile enthält:
Code:
friend void TestFunc( CTestPrivateView* );
|
Re: C++/MFC: Zugriff trotz Protected
Es hat nichts mit dem Friends-Konzept zu tun. Eher mit einem der "großen Features" von C++ zu tun, welches sich auch als große Fehlerquelle herausstellen können.
|
Re: C++/MFC: Zugriff trotz Protected
Zitat:
ps: wie sieht das Makro DECLARE_DYNCREATE aus... (Semikolon vergessen?) |
Re: C++/MFC: Zugriff trotz Protected
Zitat:
Code:
D.h. nach dem Makro steht alle folgenden Einträge erst mal auf public!
#define DECLARE_DYNAMIC(class_name) \
public: \ static const CRuntimeClass class##class_name; \ static CRuntimeClass* PASCAL GetThisClass(); \ virtual CRuntimeClass* GetRuntimeClass() const; \ Gut das Borland bei der VCL nicht auf solche verwirrenten Konstrukte zurückgegriffen hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz