Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » friend-Klassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.08.2008, 13:34 Uhr
banshee



Also sofern ich das mit friend-Klassen richtig verstanden habe, kann man da ja folgendes mit machen:


Code:
class A
{
  void bla()
  {
    geheim();
  }
}

class B
{
  friend class A;

private:
  void geheim()
  {
    //...
  }
}

int main()
{
  A foo;
  foo.bla();
}



und dann wird geheim() aus der Klasse B ausgeführt.

Ich hab in einem Code aber folgendes entdeckt:

RESOURCE.H


Code:
template<typename T> class Manager;

template<typename T> class Resource
{
    friend class Manager<T>;

public:
    unsigned int getTimestamp() const
    {
        return timestamp;
    }
}



MANAGER.H


Code:
template<typename T> class Manager
{
    T* find(const std::string& filename) const
    {
        typedef stdext::hash_multimap<std::string, T*> mapType;
        std::pair<mapType::const_iterator, mapType::const_iterator> range = items.equal_range(filename);

        for(mapType::const_iterator i = range.first; i != range.second; ++i)
        {
            i->second->getTimestamp();  // <----------
        }
    }
}



Offensichtlich wird die Methode getTimestamp() aus der Klasse Resource in der resource.h aufgerufen, aber wieso auf i->second, weil das ist ja ein Objekt vom Typ T* und woher weiß ich denn, dass dieses eine Methode getTimestamp() hat?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.08.2008, 14:54 Uhr
xXx
Devil


Ehm du hast es einfach falsch verstanden. Friend Klasse sollte eigtl. nur auf die private-Member der anderen Klasse zugreifen dürfen ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.08.2008, 17:55 Uhr
banshee



Wieso, der erste Code stimmt doch. Siehe hier:

www.cpp-tutor.de/cpp/le16/le16_01.htm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: