Newsgroup: it.comp.lang.c++
Titolo: & e * nei passaggi parametri

Scusate non riesco a passare un parametro a questa funzione, ho riletto i
manuali e rivisto esempi e codici che avevo scritto in precedenda ma non
capisco, eppure non mi sembra di essere diventato stubido, a voi la
sentenza.
E' la prima volta che usi Visual C++ 6.0 e non vorrei che fosse solo colpa
del compilatore.
unsigned int x;
unsigned int y;
unsigned int *t=new unsigned int[4];
f1(unsigned int &x, unsigned int  &y, unsigned int *t[]);
f2(int &1, int &2,char *3, int &4,unsigned int &x, unsigned int &y, unsigned
int *t[])
f1(unsigned int &x, unsigned int  &y, unsigned int *t[])
{
........
........
........
    f2( &1, &2, "testo", &4, &x, &y, *t[]);
}
error C2664: 'f2' : cannot convert parameter 5 from 'unsigned int *' to
'unsigned int &'
        A reference that is not to 'const' cannot be bound to a non-lvalue
Potreste dirmi cosa sbaglio deve esssere qualcosa di banale, altrimenti
penso che l'avrei capito.
Ringrazio chiunque voglia aiutarmi.


prova a mettere come quinto parametro semplicemente x
Pela


x, y, t[]
Ora compila, ma l'exe causa errore sapresti indicarmi l'satta semantica di
accesso agli aelementi di un array dinamico per verifica.
Grazie tante , mi domando cosa avevo bevuto quando ho fatto il debug.

 }
Non  puoi  mica  scrivere  &1   e  &2. Non  puoi  applicare  l'operatore
address-of a  delle costanti  numeriche. Visto che passi  per reference,
poi, l'operatore address-of non devi applicarlo proprio.
void f1(unsigned int &x, unsigned int  &y, unsigned int *t[]) {
	int a = 1, b = 2, c = 4;
	char *p;
 
	f2(a, b, p, c, x, y, t);
}
La mia impressione  e` che tu abbia  fatto un bel po'  di confusione con
funzioni e passaggio di parametri.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"L'ottimista pensa che questo sia il migliore dei mondi possibili. 
 Il pessimista sa che e` vero" -- J. Robert Oppenheimer


Se rileggi il mio primo post ho inserito, anche il messaggio di errore del
compilatore (ho cambiato apposta il nome della funzione in f2) e se gia' non
avevi capito che non avevo postato una funzione vera e propia ma un esempio,
qualche dubbio doveva venirti.
Allora visto che non ci arrivi ti delucido parlando mooooooooooolto
sempliceminte:
1,2,3 stavano al posto di prima , seconda e terza variabile.
f1 ed f2 sono due funzioni con f2 annidata in f1.
il tipo di ritorno non era significativo per il problema.
nei nomi delle variabili non uso numeri.
x,y,t sono le variabili che mi interessavano.
i numeri sono al posto di variabili non significative per il problema che
avevo.
la semantica del mio post era semplicemente ESPLICATIVA.
Dovresti essere un po' meno frettoloso e superficiale quando posti.
Poi se postavo la vera funzione correvo il rischio di essere OT perche' qui
si parla di C++ non di programmi (qualcuno poi con la tua stessa delicatezza
me lo avrebbe fatto notare).
Comunque grazie di avermi risposto al rischio (piu' delle stupidita' della
mia domanda) di essere preso per stupido.
Ti ammiro per il tuo coraggio.

 me lo avrebbe fatto notare).
Veramente quě si parla anche di programmi C++, ovviamente senza riferimenti
a particolari implementazioni. E poi, visto il problema, non c'era nemmeno
bisogno di postare l'intero codice.
Ciao,
Cecco

 accesso agli aelementi di un array dinamico per verifica.
Cosa vuol dire che l'exe causa errore? Forse viene lanciata qualche
eccezione, ma senza maggiori dettagli è impossibile saperlo.
Con "accesso agli elementi di un array dinamico" intendi come fare ad
accedere agli elementi dell'array:
int *t[ ]
per caso? Se si, allora per accedere all'oggetto puntato dall'i-esimo
elemento di t, basta usare la sintassi:
*t[i]
Nota che il fatto che l'array sia dinamico non c'entra proprio niente, t è
semplicemente un array di puntatori ad int, e si comporta allo stesso modo
in entrambi i casi.
Ciao,
Cecco

Grazie no mi sono spiegato bene, comunque poi ho trovato cio che cercavo, la
prossima volta saro' piu' chiaro.
Grazie ancora per il tempo dedicatomi.


Visto che era un programma OpenGL su piattaforma Win32 credo propio che ci
sarebbero state molte critiche, anche se il problema era indipendente da
piattaforma e libreria.
Ciao