|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 13.04.2009, 16:34 Titel: Cast Operator überladen |
|
|
Hi,
ich habe eine Template Klasse und will von 2 Spezialisierungen einen cast erlauben. Quasi Class<A> in Class<B> casten.
Allerdings kann ich scheinbar keine cast-Operatoren als nicht-Member deklarieren und die haben weder einen Rückgabetyp noch Parameter.
Wie kann ich das also hinbekommen?
(Ich könnte evtl. ein ClassA von Class<A> ableiten und dort den Cast als Member einbauen aber vielleicht gibt es ja noch eine bessere Lösung) _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 14.04.2009, 08:27 Titel: |
|
|
Erstelle doch einfach einen ctor in Class<B>, welcher als Parameter ein Class<A> haben möchte... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.04.2009, 09:31 Titel: |
|
|
AFE-GmdG hat Folgendes geschrieben: | Erstelle doch einfach einen ctor in Class<B>, welcher als Parameter ein Class<A> haben möchte... |
Hm, haste n kurzes Beispiel? Ich wüsste nicht, wie ich in einer Template Klasse eine Funktion nur für einen bestimmten TemplateParameter schreiben kann.
(ein <typ> hinter dem Konstruktornamen ging jedenfalls nicht) _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.04.2009, 15:04 Titel: |
|
|
hmm wenn du schon 2 Spezialisierungen hast dann kannst du in beide einen Konstruktor einschreiben: CPP: | class A;
class B;
template<typename T> class foo
{
...
};
template<> class foo<A>
{
public:
// cast for foo<B> to foo<A>, funktionert auch mit static_cast
explicit foo<A>( const foo<B>& rhs ) { ... }
};
template<> class foo<B>
{
public:
// cast for foo<A> to foo<B>, funktionert auch mit static_cast
explicit foo<B>( const foo<A>& rhs ) { ... }
}; | alternative wäre ein implicit cast operator, also wenn du in foo<A> ne funktion "operator foo<B>();" einbaust, ist aber etwas unsicherer... übrigens kannst du für implicit cast auch das "explicit" keyword (ist ja gar net highlighted hier ;P) weglassen, ist aber auch fehleranfälliger. Ist halt gemschmackssache.
Cheers DXer |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|