NSA - Non Solo Amiga

SOFTWARE => Linguaggi di programmazione e scripting => Topic aperto da: rebraist - 19 Ottobre 2011, 13:03:35

Titolo: [c++] Visibilità funzioni membro
Inserito da: rebraist - 19 Ottobre 2011, 13:03:35
Perdonate la niubbaggine:
Intuition (che includo) ha una funzione OpenWindow che ha un parametro.
Ora io mi creo una mia classe e chiamo una funzione membro OpenWindow solo che ha 3 parametri.
classe::OpenWindow (...)
Nel main mi chiamo oggetto.OpenWindow dopo aver dichiarato il mio bravo oggetto.
g++ di aros mi risponde: guarda che la macro openwindow gli passi tre argomenti mentre ne vuole uno solo...
OpenWindow di intuition è una inline quindi effettivamente una macro.
Come faccio a usare la mia openwindow senza cozzare con quella di intuition? Non basta già chiamarla insieme all'oggetto?
Titolo: Re: [c++] Visibilità funzioni membro
Inserito da: TheKaneB - 19 Ottobre 2011, 13:52:05
Se OpenWindow è una funzione inline scommetto che hai piazzato "using namespace xxx" a manetta :-)

Usa i qualificatori completi per evitare il name clashing.

Se OpenWindow, invece, è un #define, non c'è nulla da fare purtroppo.
Titolo: Re: [c++] Visibilità funzioni membro
Inserito da: rebraist - 19 Ottobre 2011, 17:20:32
credo sia una define (a naso). ora mi da un errore del tipo:
bool myclass::__inline_Intuition_OpenWindow is not a static member of class 'myclass'...
cmq avevo una using namespace std..:)
Titolo: Re: [c++] Visibilità funzioni membro
Inserito da: TheKaneB - 19 Ottobre 2011, 17:39:56
dall'errore che hai scritto è sicuramente una define...
Non ti resta che chiamare in un altro modo il tuo metodo e bestemmiare contro il C ed il suo preprocessore  :ugeek:
Titolo: Re: [c++] Visibilità funzioni membro
Inserito da: rebraist - 19 Ottobre 2011, 17:57:48
Citazione da: "TheKaneB"
dall'errore che hai scritto è sicuramente una define...
Non ti resta che chiamare in un altro modo il tuo metodo e bestemmiare contro il C ed il suo preprocessore  :ugeek:
si, avevo già risolto cambiando i nomi ma pensavo si potesse fare qualcosa di meno brutale. quando leggi i testi sul c++ sembra sempre il c sia il suo parente povero. invece questo in c non capita... non esistono i namespaces ma almeno non esistono casini. la cosa antipatica è che l'errore lo da solo sotto aros. sotto morphos no...
Titolo: Re: [c++] Visibilità funzioni membro
Inserito da: TheKaneB - 19 Ottobre 2011, 18:12:23
Non ci siamo capiti :D

i #define sono come i copia-incolla, se ne strafottono dei namespace!

In C++, invece, si usano le funzioni inline che rispettano perfettamente le regole di scoping previste dal linguaggio. Il C è veramente un linguaggio arcaico, in C++ queste cose non succedono (se si eliminano gli utilizzi arcaici dei #define e di tutte le altre porcate del preprocessore).