RTTI abstrkatnej triedy C++

nou

RTTI abstrkatnej triedy C++
« kdy: 03. 05. 2011, 11:41:29 »
portujem jeden kod na windows z linuxu. ide to celkom v poriadku jediny problem je v tomto kusku kodu
Kód: [Vybrat]
SubWindowInterface *interface = dynamic_cast<SubWindowInterface*>(subWindow->widget());//383
if(interface){//384
a hadze nasledovne errory
Kód: [Vybrat]
:383: error: expected unqualified-id before 'struct'

:383: error: expected initializer before 'struct'

:384: error: expected primary-expression before 'struct'

:384: error: expected ')' before 'struct'

SubWindowInterface je class s cisto virtualnymi metodami teda class SubWindowInterface { virtual int methodA() = 0;
virtual methodB() = 0;

na linuxe s gcc mi to preklada bez problemov. na windowse s mingw pise taketo podivnosti. dokonca to iste dostanem aj pri crosscompilaci na linuxe s mingw


Sten

Re: RTTI abstrkatnej triedy C++
« Odpověď #1 kdy: 03. 05. 2011, 12:19:19 »
Tipuji, že
Kód: [Vybrat]
interface bude nějaké makro.

D.A. Tiger

  • ****
  • 480
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: RTTI abstrkatnej triedy C++
« Odpověď #2 kdy: 03. 05. 2011, 13:32:24 »
Tipuji, že někde nad tím kódem může být syntaktická chyba.

SubWindowInterface je bázová třída typu který vrací metoda widget( )?

nou

Re: RTTI abstrkatnej triedy C++
« Odpověď #3 kdy: 03. 05. 2011, 14:48:21 »
Tipuji, že
Kód: [Vybrat]
interface bude nějaké makro.
najskor. zmena na interfac pomohla.

widget() vracia QWidget. a v projekte mam triedy ktore maju ako bazovu triedu napr QTextEdit a SubWindowInterface.

nhx

Re: RTTI abstrkatnej triedy C++
« Odpověď #4 kdy: 03. 05. 2011, 22:04:46 »
"interface" je genialni makro zahrabany nekde v COMovejch hlavickach...


Johnnie

Re: RTTI abstrkatnej triedy C++
« Odpověď #5 kdy: 04. 05. 2011, 10:54:00 »
co je na "#define interface struct" tak geniálního?  ;D

nhx

Re: RTTI abstrkatnej triedy C++
« Odpověď #6 kdy: 04. 05. 2011, 18:23:01 »
co je na "#define interface struct" tak geniálního?  ;D

Genialni je jeho debilita a zbytecnost.

nhx

Re: RTTI abstrkatnej triedy C++
« Odpověď #7 kdy: 04. 05. 2011, 18:27:25 »
co je na "#define interface struct" tak geniálního?  ;D

Genialni je jeho debilita a zbytecnost.

Nakonec proc si celej jazyk nepredelat k obrazu svemu, ze... co treba nasledujici makra:
Kód: [Vybrat]
#define class trida
#define do delej
#define while dokud
#define int cele_cislo
#define void nic
#define template sablona
#define return vyblej

a tak dale..

Re: RTTI abstrkatnej triedy C++
« Odpověď #8 kdy: 04. 05. 2011, 21:13:09 »
Jde o to, že v jazyce IDL se interface používá. V zásadě ty opravdu plnohodnotně definované interfacy v COM+ se dají pochopit i jako předpis IDL, takže se deklarace nemusí psát víckrát.

Když se podíváte na nějakou takovou definici, tak obsahuje spoustu divných klíčových slov, které jsou ale v C++ deklarovaná jako prázdná makra .