Kein Zugriff auf private struct
-
class A{ private: struct data{...}; friend class B; }; class B{ funktion () { A::data oData;} };trozt friend deklaraion keine zugriff auf den data aus klasse A!!
Fehler:
c:\Dokumente und Einstellungen\Boris\Eigene Dateien\Visual Studio-Projekte\simulator\SystemFramework.h(143): error C2248: 'CSystemFramework::m_SBlock': Kein Zugriff auf private struct, dessen Deklaration in der Klasse "CSystemFramework" erfolgte
-
Welchen Compiler benutzt du denn? g++3.4.5 und VC++8 führen das folgende Beispiel anstandslos aus:
#include <iostream> using namespace std; class A { private: struct data { int x, y; }; friend class B; }; class B { public: void test() { A::data oData = {47, 11}; cout << oData.x << ", " << oData.y << "\n"; } }; int main() { B b; b.test(); }
-
Hallo,
einige Compiler bekommen Probleme, wenn die als friend deklarierte Klasse zuvor nicht deklariert wurde.
Versuch's mal so:#include <iostream> using namespace std; class B; // <- vorher deklarieren class A { private: struct data { int x, y; }; friend class B; }; class B { public: void test() { A::data oData = {47, 11}; cout << oData.x << ", " << oData.y << "\n"; } }; int main() { B b; b.test(); }Ansonsten wäre es schön, wenn du mal ein *minimales* Beispiel posten würdest, bei dem der Fehler noch auftritt.