Autore Topic: [c++] Visibilità funzioni membro  (Letto 1851 volte)

Offline rebraist

  • Nerd
  • *****
  • Post: 946
  • Karma: +13/-1
    • Mostra profilo
[c++] Visibilità funzioni membro
« il: 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?
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Amigaos spacca.
Aros rulla.
Morphos corre di brutto.
Sinceramente, non vorrei che mio figlio facesse amicizia con uno di questi tre tipacci.
Dottore:lei é uno di quelli che si potrebbero definire nerd...
Io: dottò, lo so di mio. Sono pure iscritto a 'n'forum...
Dottore: su internet?
Io: no a rete 4

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [c++] Visibilità funzioni membro
« Risposta #1 il: 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.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline rebraist

  • Nerd
  • *****
  • Post: 946
  • Karma: +13/-1
    • Mostra profilo
Re: [c++] Visibilità funzioni membro
« Risposta #2 il: 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..:)
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Amigaos spacca.
Aros rulla.
Morphos corre di brutto.
Sinceramente, non vorrei che mio figlio facesse amicizia con uno di questi tre tipacci.
Dottore:lei é uno di quelli che si potrebbero definire nerd...
Io: dottò, lo so di mio. Sono pure iscritto a 'n'forum...
Dottore: su internet?
Io: no a rete 4

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [c++] Visibilità funzioni membro
« Risposta #3 il: 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:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline rebraist

  • Nerd
  • *****
  • Post: 946
  • Karma: +13/-1
    • Mostra profilo
Re: [c++] Visibilità funzioni membro
« Risposta #4 il: 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...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Amigaos spacca.
Aros rulla.
Morphos corre di brutto.
Sinceramente, non vorrei che mio figlio facesse amicizia con uno di questi tre tipacci.
Dottore:lei é uno di quelli che si potrebbero definire nerd...
Io: dottò, lo so di mio. Sono pure iscritto a 'n'forum...
Dottore: su internet?
Io: no a rete 4

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [c++] Visibilità funzioni membro
« Risposta #5 il: 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).
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: