Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

1

29.04.2010, 19:42

[Solved] Friend mit innerer Klasse

Hallo, der Titel ist vielleicht ein wenig missverständlich, aber mein Problem ist folgendes:

Ich habe eine Klasse Foo im namespace A, und eine Klasse Bar im namespace A::B, zudem hat A ein Element B gekapselt.
Also:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace A
{
    namespace B
    {
        class Bar;
    }

    class Foo
    {
    private:
        static B::Bar MyBar;
        static void DoSth(){}
    };

    namespace B
    {
        class Bar
        {
        public:
            friend class Foo;
            void DoSthElse(){Foo::DoSth();}
        };
    }
}


Damit Zeile 21 klappt, habe ich in Z.20 ein friend class Foo; eingefügt.

Dennoch kommt folgender Fehler:

Zitat

error C2248: "A::Foo:: DoSth": Kein Zugriff auf private Member, dessen Deklaration in der A::Foo-Klasse erfolgte.
main.cpp(13): Siehe Deklaration von 'A::Foo:: DoSth'
main.cpp(10): Siehe Deklaration von 'A::Foo'

(Sorry für die Leerzeichen, denn sonst wird der Text in :D umgewandelt)

Kann mir das bitte jemand erklären warum er meine Friend-Deklaration ignoriert?

Und wie kann ich das umgehen?

Danke schon mal im voraus ;)

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CBenni::O« (29.04.2010, 19:54)


2

29.04.2010, 19:49

mach mal in die Foo Klasse: friend class Bar;
und lösch das andere friend.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

3

29.04.2010, 19:54

Aah... Danke!
Mit friend class B::Bar; klappte es...
Stimmt, ich hatte das vertauscht... Mit friend gestattet eine Klasse einer Anderen Zutritt zu den Privaten Membern, die Klasse holt sich die auch nicht einfach :D
Danke!

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Werbeanzeige