Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: nou 03. 05. 2011, 11:41:29

Název: RTTI abstrkatnej triedy C++
Přispěvatel: nou 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
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: Sten 03. 05. 2011, 12:19:19
Tipuji, že
Kód: [Vybrat]
interface bude nějaké makro.
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: D.A. Tiger 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( )?
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: nou 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.
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: nhx 03. 05. 2011, 22:04:46
"interface" je genialni makro zahrabany nekde v COMovejch hlavickach...
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: Johnnie 04. 05. 2011, 10:54:00
co je na "#define interface struct" tak geniálního?  ;D
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: nhx 04. 05. 2011, 18:23:01
co je na "#define interface struct" tak geniálního?  ;D

Genialni je jeho debilita a zbytecnost.
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: nhx 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..
Název: Re: RTTI abstrkatnej triedy C++
Přispěvatel: Ondřej Novák 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 .