Newsgroup: it.comp.lang.c++
Titolo: friend template ...

Chiedo scusa, è una cosa che avevo già chiesto, e non riesco a 
ritrovare nessun thread con le parole chiave friend e template 
(sarà sicuramente colpa mia, ma boh).
Allora la richiedo di nuovo, ed aggiungo una nuova richiesta :
1)
si può rendere una intera famiglia di funzioni template friend 
di una classe (sia quest'ultima template o meno, e nel primo 
caso non necessariamente in relazione alle candidate friend).
Esempio, che non compila, di quello che vorrei fare, che forse 
spiega meglio delle parole confuse che ho scritto
class Pippo
{
friend:
     template <typename tt_Arg> int AmicheDiPippo (tt_Arg & Arg);
};
altra cosa, mi servirebbe poter definire (qui forse chiedo una 
cosa fantascientifica) una famiglia di costruttori template, per 
una classe non template, tipo :
#define BuffSize 100
class Inutile
{
private:
     char Buff [BuffSize];
     template <typename tt_Arg> Inutile (tt_Arg & Arg)
     {
     memcopy (Buff, & Arg, Min (sizeof (tt_Arg), BuffSize));
     return;
     };
};
in realtà questa volta il primo quesito nasceva dal tentativo di 
aggirare il secondo, quello della famiglia parametrica di 
costruttori. La ragione di fondo è che un costruttore template 
di una classe non template mi era sembrato davvero eccessivo 
come pretesa ... ma tant'è, qualche parere et inzulti vari 
inevitabbili saranno bene accetti.
grazie
ciao
Soviet_Mario

 qualche parere et inzulti vari inevitabbili saranno bene accetti.
Il C++ *e'* potente. ;-)
Ciao,
Nicola
-- 
Nicola.Musatti <at> gmail <dot> com
Home: 
http://nicola.musatti.googlepages.com/home
Blog: 
http://wthwdik.wordpress.com/

 inevitabbili saranno bene accetti.
Dì la verità, sei un feticista.

 Nicola

 La sintassi e' corretta, pero' col memcopy puoi farti male.
Io direi che è possile che tu non te ne faccia... :)
-- 
  Enrico Franchi (RiK0)
[ Yellow Dog Linux User ]
[ #299188 Linux Counter ]
[ MacOS X User          ]

 };
Questo codice ha la funzione di corrompere randomicamente lo spazio di
memoria del tuo processo o serve a qualcosa? :)
Perchè diciamo che non ne vedo l'uso, e per i vari usi che mi vengono in
mente, ci sono sistemi pià pratici.
Mi spiego, il tuo codice genera un oggetto immenso che se lo copi un po'
troppo in giro finisce per sdraiarti la macchina. Prendi e ci butti dentro
un oggetto, *ma* rischi di troncarlo se è troppo grosso. Qualunque cosa ci
fai da quel momento in poi è semplicemente sbagliata.
Da cui, visto che sei in una classe, perchè non allocare la memoria con new
(e distruggerla secondo il paradigma RAII -- buffo questo, in effetti, ma
la mattina presto le speranze che mi ricordi la sigla gemella sono
infime -- nel distruttorre)?
In questo modo non tronchi nulla. Ma a questo punto quale è il gioco? Hai
una classe che copia un oggetto e se lo spara nella pancia. Se lo spara
inoltre in modo grezzo, facendo solo una shallow copy (e potenzialmente
facendo *tanti* danni).


 facendo *tanti* danni).
Si, quello della shallowness è il vero tallone di achille, 
inevitabile,
ma in effetti sin dal principio non avevo nessuna ambizione di 
rendere
serializzabili anche oggetti che non erano nati per quali, dato 
che il container non aveva alcun modo per interrogare gli 
oggetti medesimi altro che chiedendone il nome stringa del tipo.
Cmq il client di quell'accrocchio sarebbe stato uno stack 
generico in cui copiare dentro roba di vari generi (la classe 
stack non l'ho postata), pur conservando uan traccia del 
contenuto, in modo che POP potesse interrogare lo stack prima di 
chiedere un blocco e controllando che si potesse estrarre un 
blocco di dato tipo.
Non ho ancora immaginato nessuna facility di conversione neppure 
nei formati banali, tipo FLOAT <-> DOUBLE. Ma è solo una prova
ciao
Soviet

 serializzabili anche oggetti che non erano nati per quali
Se il punto è la serializzazione, c'è una libreria in Boost.
L'hai guardato?
-- 
blog:  
http://www.akropolix.net/rik0/blogs
 | Uccidete i filosofi,
site:  
http://www.akropolix.net/rik0/
      | tenetevi riso e
forum: 
http://www.akropolix.net/forum/
     | bacchette per voi.