Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » wrapper cast problem

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
30.03.2014, 17:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,

ich hab folgende Struktur:


C++:
class ClientImplA
{
public:
   ClientImplA(SpecialClass special);
};

class ClientBase
{
public:
   ClientBase() : special_(...)
   {
      // have to do it here, otherwise special_ is not yet allocated when used initializing base class
      wrapper_ = new ClientImplWrapper(special_);
   }

   ClientImplA* getImpl() const { return wrapper_; }
private:
   SpecialClass special_;

   class ClientImplWrapper : public ClientImplA
   {
   };

   ClientImplWrapper* wrapper_;
}

class MyClient : public ClientBase
{
};



Das Problem ist nun das ich an anderer Stelle folgendes benutzen wollen würde:


C++:

void function(ClientImplA* cia)
{
}

MyClient* mcl = ...;

function(mcl); // fails
function(mcl->getImpl()); // ok!



gibts ne möglichkeit dem ClientBase einen operator zu spendieren, das er mir den wrapper_ direkt liefert? und nicht explizit mcl->getImpl() aufrufen muss?

Irgendwie steh ich da wohl auf dem Schlauch.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.03.2014, 11:18 Uhr
TOSHMAX



Hi,

solange es sich bei mcl um einen Pointer handelt, wird das nur möglich sein, wenn ClientImplA eine Basis von MyClient ist.

Mit einem Operator wäre aber z. B. Folgendes möglich:

C++:
class ClientBase
{
    public:
        operator ClientImplA*()
        { return wrapper_; }
};

MyClient* mcl = ...;
function(*mcl); // muss zuerst dereferenziert werden

 
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: