Newsgroup: it.comp.lang.c++
Titolo: Due variabili da una funzione?

Come faccio a farmi restituire due variabili da una funzione? Riesco a farmi
restituire il puntatore ad un array, ma la sua lunghezza no ... anche se
nella funzione č memorizzato in una variabile "x"....
Qual'č il comando per cancellare lo schermo del dos in c++? Grazie e scusate
per le domande sciocche ...


Non esiste in C++ standard. La documentazione del tuo compilatore e della
tua piattaforma ti spiegherà come fare.
Max

 nella funzione č memorizzato in una variabile "x"....
non fai :-)
Seriamente: potresti crearti una struct (che pur non conoscendo le stl mi
sembra + leggera).
ex. se ti deve restituire un intero e un double fai
struct s {
int x;
double y;
}
e dichiari la funzione:
s funzione() {...}
ciao,
Michele Silletti

 }
quindi senza starci a r'inventare l'acqua calda
meglio fare una funzione che torna un pair.
-- 
Posted from [194.214.173.28] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Non è più semplice far restituire alla funzione il puntatore all'array
creato nella funzione, la cui lunghezza viene assegnata ad una variabile
passata alla funzione per riferimento?

 per le domande sciocche ...
La funzione system("cls") contenuta in dos.h, altrimenti se hai un
compilatore Borland c'è anche clrscr() contenuta in conio.h
Cecco

 passata alla funzione per riferimento?
Piu' facile non mi sembra visto che se poco poco cambi i due tipi
tornati devi modificare in piu' parte il software a meno che non
metti qualche sizeof ( ) qua e la. E' cosi' difficile scrivere qualche cosa
del tipo:
typedef std::pair<TIPO1, TIPO2> MioTipo;
MioTipo foo()
{
    TIPO1 aVar;
    TIPO2 anotherVar;
    return MioTipo(aVar, anotherVar);
}
mi sembra sia + semplice. E poi a sto punto passa 2 parametri per
riferimento
invece che farti dare solo la dimensione per riferimento.


 wrote in message
OWQe7.18903$SV4....@news1.tin.it...


 wrote in message
e%Qe7.18906$SV4....@news1.tin.it...


  pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}
Con questo, non si rischia che il tipo parametrico U1, non sia
compatibile con il tipo T1 con il quale e' stato istanziato il pair?
Stessa questione ovviamente per la coppia U2-T2?
Non sarebbe meglio fare un costruttore di copia con il tipo
parametrico uguale? Quali vantaggi porta questo tipo di procedimento?
Scusate ancora, ma sono proprio curioso!!
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]
SunGray aka Gabriele Lana  
www.redangel.it
www.sungray.com
contact me @ : 
www.redangel.it
contact me @ : 
sun...@tiscalinet.it
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]

 parametrico uguale? Quali vantaggi porta questo tipo di procedimento?
In questo modo se entrambe le coppie di tipi sono compatibili hai un
costruttore che effettua la doppia conversione (serve in particolare per
poter costruire paia di puntatori a classi base a partire da paia di
puntatori a sottoclassi).
Nota che anche il costruttore "classico" e' necessario, perche' un
costruttore template non puo' combaciare con un costruttore di copia.
Ciao,
Nicola

Nicola
Ciao


 costruttore template non puo' combaciare con un costruttore di copia.
non ho capito sino in fondo questa frase. Puoi spiegarmela?
grazie Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 non ho capito sino in fondo questa frase. Puoi spiegarmela?
Supponi di avere:
template <typename T> struct C {
    C() {}
    template <typename U> C(const & U u) {}
};
int main() {
  C<int> c1;
  C<int> c2(c1); // <=
}
L'istruzione con la freccia non deve compilare perche' per definizione
un costruttore template *non* e' il costruttore di copia, ovvero non
puo' essere specializzato per U = T.
Ciao,
Nicola