mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Container ed ereditarietà

Ciao a tutti,
mi trovo di fronte alla necessità di realizzare
una struttura dati che contenga degli eventi
schedulati, che verranno poi eseguiti col tempo.
Nella mia idea, avrei pensato di creare la
classe "Evento" in cui conservare informazioni
base come l'istante in cui avverrà, e poi
tante classi che descrivono eventi specifici ed
ereditano Evento.
Fin qui tutto bene, ma riguardo alla struttura
dati non mi sono persuaso. Se l'insieme di eventi
fosse contenuto in una std::list<Evento>, potrei
facilmente eseguire il push_back di vari eventi
specifici nella lista, ma come fare per la procedura
inversa? Mi spiego: nel momento in cui trovo un evento
che va eseguito, come faccio a capire a quale classe
figlia appartiene, così da processarlo correttamente?
Un'idea che mi viene (l'unica in verità) è di inserire
nella classe Evento l'attributo "tipo", ovvero un
enumerated che mi fa capire cosa sto trattando.
Ci sono soluzioni più eleganti?
Grazie mille.
Livio

 ha scritto nel messaggio
news:opr121z5...@news.tin.it...

una soluzione può essere del tipo:
class Evento {
   <dati comuni a tutti gli eventi>
public:
    void Esegui() = 0; // funzione che deve essere implementata negli eventi
derivati
};
class EventoDerivato : public Evento {
  <dati specifici per questo evento>
public:
  void Esegui() { // implemento ciò che l'evento deve fare }
};
poi crei la lista, ma di puntatori a Evento:
std::list<Evento*> lista;
e nel momento in cui estrai un elemento (chiamiamo elem) per trattarlo:
elem->Esegui();
in questo modo viene eseguita la funzione specifica dell'evento derivato
--
Pela

 in questo modo viene eseguita la funzione specifica dell'evento derivato
Grazie, mi sembra una buona soluzione.
Solo una domanda: e se dichiarassi come virtual la Esegui() in Evento?
Non potrei evitare di usare la lista di puntatori, tornando alla 
list<Evento>?

 Livio
Ciao,
Nids

 list<Evento>?
No. Un list<T> (come qualsiasi altro container) contiene elementi di tipo 
T, non elementi di classe derivate. Se a 'push_back' passiamo un 
riferimento a  un'instanza di un tipo derivato da T, la copia costruita nel 
container sarà comunque di tipo T. Se T è ha membri virtuali puri, 
std::list<T> non può nemmeno esistere.
Max 

 No. Un list<T> (come qualsiasi altro container)
Mi riferisco naturalmente ai container della Libreria Standard.
Max

Eccellente, ringrazio tutti quelli che mi
hanno risposto.
Saluti da Livio


proprio cosě :-)
--
Pela
Newsgroup: it.comp.lang.c++
Titolo: Sono in alto mare! Chiedo aiuto x favore

Sto progettando una rubrica in Visual C++ ed ho un serio problema. Poichè
sto utilizzando CRecordSet per la gestione dei record, non posso utilizzare
la funzione GetAbsolutePosition(), che potrei utilizzare solo se avessi
fatto gestire il database Access dalla classe CDAORecordSet. Per favore vi
prego di darmi una funzione alternativa che sicuramente esisterà, ma che non
posso trovare da nessuna parte xchè sprovvisto di Help!!! A buon
rendere!!!!!!!

Qui sei OT. Prova a chiedere su it.comp.programmare.win32
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: [cygwin] per iniziare

Dovendo iniziare a programmare in C++ ho deciso di istallarmi
l'ambiente cygwin.
Non avendo esperienza di programmazione in ambiente Unix
ho un paio di domande da porvi:
- per quale motivo dopo aver compilato correttamente un
programma non riesco ad eseguirlo nella shell bash, ed invece
funziona perfettamente in una shell windows?
- ho notato che l'inserimento di caratteri con il metodo ALT+ASCIICODE
all'interno della shell bash e' inibito.
Avendo una tastiera italiana standard come posso inserire caratteri speciali
quali {} ~ etc.. senza dover modificare il layout della tastiera?
Thanks
LuKe
lu...@gmx.de



Avevo anche io questi problemi!!
Prova con ALTGR 7 PER {  E ALTGR 0 per } per la tilde sempre con ALTGR
e qualcosa ma ora sono su win e non so..
Per eseguire il programma prova ./nome_programma

Newsgroup: it.comp.lang.c++
Titolo: [Forse OT] Nomi estesi

Vorrei sapere che modo utilizzare per visualizzare in una ListBox i nomi
delle Directory più lunghi degli 8 caratteri DOS non nel formato 8.3 Se
qualcuno potesse aiutarmi grazie....
--
Ciao, Logaloga.

 delle Directory piů lunghi degli 8 caratteri DOS non nel formato 8.3 Se


Newsgroup: it.comp.lang.c++
Titolo: dll di sole risorse

E' possibile scrivere dll di sole risorse?
Se si come?
Io uso visual c++ 4.1 e C++ builder.
Saluti

Se si come?
con il VC dovrebbe esserci l'esempio RESDLL, comunque se non ricordo
male si tratta di creare di un file di risorse, compilarlo e linkarlo
specificando /NOENTRY come parametro del linker.
Gianpaolo Bottin
- To boldly go where no one has gone before... -

Newsgroup: it.comp.lang.c++
Titolo: Dos ---> Windows

Salve a tutti grandi guru della programmazione :)
Studio ormai da un anno con la scuola la programmazione per il C++ sotto 
dos
(come compilatore usiamo il Turbo C++ 3 della Borland) e sono diventato
ormai piuttosto bravo.
Vorrei iniziare la programmazione sotto windows con il Visual C++ ma non 
so
come fare questo passaggio, cioe'... l'ultima volta che mi sono ritrovato 
ad
installare il Visual C++ non ho capito piu' molto... a dir la verita' 
nulla.
Volevo quindi qualke konsiglio da voi esperti su testi , siti e manuali
online che mi possano aiutare.
Tnx x tutto :)
-- 
:.___________.:
Shakii the Wolf
^^^^^^^^^^^^^^^
p4...@inwind.it
 Icq: 20393836
_______________

Tnx x tutto :)
Ti si e' incastrato il mouse sul pulsante di invio messaggio ?
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff
Newsgroup: it.comp.lang.c++
Titolo: Testing TCP/IP stack

Salve a tutti,
    come faccio a testare lo stack tcp/ip che sto progettando,
possedendo una sola macchina??
 Premetto che per ora sto lavorando sul modulo IP. Credo mi occorrerebbe
qualcosa tipo un driver di loopback, ma come si implementa (quello di
Linux non l'ho capito molto...)
 Grazie
        Andrea

 possedendo una sola macchina??
Connettiti all'"host" 127.0.0.1, noto anche come "localhost".
Non mi pare che il C++ c'entri molto, pero`:-).
Alex

Newsgroup: it.comp.lang.c++
Titolo: Borland C++ Builder - AIUTO!!!

Ho i seguenti problemi:
1) Devo costruire un'applicazione per Dos, con Borland C++ Builder 3.0, che
deve lanciare a sua volta un eseguibile e deve
    svolgere determinate azioni in base al valore restituito dal programma
chiamato (restituisce un  valore tramite "errorlevel").
    Premetto che questo programma esterno non è modificabile.
    E' possibile testare ERRORLEVEL dal mio programma?
2) Ho bisogno di avere una libreria di varie funzioni (da me costruite).
    Riesco a creare il .LIB, lo includo nel progetto che deve utilizzarlo
(tramite "Add to project"), ma quando compilo il mio
    programma ottengo un errore del Linker: non riesce a trovare un
collegamento per le funzioni definite nella mia libreria.
    Dov'è che sbaglio?
    Grazie!


Mi dispiace smontarti subito, ma BCB non permette di compilare in DOS,
solo Win32 (al massimo in modalità console)
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave
Linux Registered User    # 198292
Linux Registered Machine # 88280


Sei OT; comunque dai una occhiata all'header process.h.
Manlio Perillo
Newsgroup: it.comp.lang.c++
Titolo: Domanda da novellino

Il primo parametro da passare a ifstream e un const char: come faccio a 
convertire una string in modo da paterla usare in ifstream?
Grazie 

 convertire una string in modo da paterla usare in ifstream?
Usi il metodo std::string:c_str().
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic

Newsgroup: it.comp.lang.c++
Titolo: Domanda sui socket

Ciao a tutti, ho la necessità di sviluppare una piccolo programma che invia 
e riceve una serie di stringhe lette da un file txt tra due pc in rete.
Dopo una veloce ricerca sulla rete ho deciso di sviluppare questo software 
con i socket.
Su un PC ho attivato il server in ascolto su una determinata pota, su un 
altro pc il client invia una stringa, il server la riceve.
fin qua tutto bene, il server però deve elaborare il dato ricevuto e deve 
rispondere con il dato elaborato.
Quello che vorrei sapere è:
il client può ricevere dei dati o devo implementare un nuovo server sul pc 
che ha il client?
grazie a tutti
Ciao
Resaul

 sul pc che ha il client?
il client PUO' ricevere i dati.

 ha scritto nel messaggio 
news:469f336f$0$17943$4faf...@reader1.news.tin.it...

Ma basta mettere una receive dopo la send? 

 Ma basta mettere una receive dopo la send?
si

 
Si, ma occhio al deadlock.
Se metti una receive dopo la send, senza preoccuparti di implementare
alcun tipo di timeout e con il socket bloccante => se il server mentre
elabora va in crash o comuqnue non riesce a spedire i dati => il client
restera' bloccato sulla receive all'infinito.
Per questi motivi io in genere prima della receive metto sempre
o quasi una select con timeout e poi leggo solo il numero dei byte che
sono effettivamente arrivati (sempre ammesso che sia possibile conoscere
tale numero di byte, ad esempio con una funzione ioctl e FIONREAD)
Ciao,
Marco.

Newsgroup: it.comp.lang.c++
Titolo: Telecamere e variazione automatica contrasto/brillantezza

Ciao a tutti!
Avrei una domandina forse un po' insolita da porre.
Sto lavorando un po' con le telecamere (in bianco e nero). In pratica sto
cercando di fare un programma di videoregistrazione.
Il problema è il seguente:
- vorrei variare in automatico il contrasto e la brillantezza in modo da
ottimizzare l'illuminazione dell'immagine.
Questo per ovviare ai vari cambiamenti di luce che una telecamera potrebbe
essere sottoposta durante il giorno.
La mia domanda è:
esiste un programma.. una DLL.. o magari del codice di esempio che sia in
grado di fare ciò oppure che mi possa dare una mano a capire la strada da
seguire?
Grazie 1000

Ciao,
Questo newsgroup si occupa del linguaggio di programmazione C++. Per
questo non e' il posto piu' adatto per porre domande come la tua. Ti
invito a cercare un gruppo il cui argomento sia piu' rispondente alle
tue esigenze. Avrai maggior probabilita' di risolvere il tuo problema
ed
eviterai perdite di tempo a chi consulta it.comp.lang.c++ .
Grazie,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: Problemi con scrittura su file

Sapete dirmi perchč non crea ne scrive sul file?
#include <iostream>
#include <fstream>
using namespace std;
int main ()
 ofstream outfile ("C:\file.txt");
 outfile << "Ciao";
 return 0;
}
Grazie.
--
Sapete cosa ha di buono windows?
Se lo sapete ditemelo perchč
sto ancora cercando di capirlo!
--
Non č stato rilevato nessun bug nel sistema.
Si desidera crearne uno?
--
Posted from [195.223.215.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

  ofstream outfile ("C:\file.txt");
Manca uno slash.



Sei vittima della limitata capacità mentale della Microsoft.
Come gli è passato in mente di usare '\' al posto di '/'
per separare le directory!
Il tuo problema è che \f è un solo carattere: '\f' (form feed),
per cui sballa tutto.
Fai invece "C:/file.txt".
Manlio Perillo

 }
Devi scrivere
ofstream outfile ("C:\\file.txt");
EMG

Newsgroup: it.comp.lang.c++
Titolo: bravi!!!!

Siete tutti dei poveri somari!!!!chi meglio di me sa programmare???voi non
valete una merda secca di cane in confronto a me!!!riesco a far fischiare
delle cout che voi manco sognate,razza di decelebrati!!!!
--
<Dmitry 9 dighe e mezzo>
Ma tu hai mai provato a vivere? ti sei mai fatto una scopata e avere
tu e lei i capelli bagnati sulla schiena?

 tu e lei i capelli bagnati sulla schiena?
E tu hai mai provato a capire perche' esisti? Cosa ha fatto di male
l'umanita' per condividere lo stesso pianeta con te?

  l'umanita' per condividere lo stesso pianeta con te?
 l'ERRORE INUMANO DI METTERE AL MONDO SOGGETTI SPORCHI COME TE,ORA SPARISCI
NEL MIO KILLFILE CANE BASTONATO!
--
<Dementy>
Ho perso l'abitudine di metter mano al mio Ctrl-k ma ti prego di
evitare di rispondere ai miei post. Cito Sciassia: <omissis>

 l'umanita' per condividere lo stesso pianeta con te?
l'ERRORE INUMANO DI METTERE AL MONDO SOGGETTI SPORCHI COME TE,ORA SPARISCI


 NEL MIO KILLFILE CANE BASTONATO!
Mi sembri esaurito, bah, cmq, non ti considerero' piu, stupido troll.

Newsgroup: it.comp.lang.c++
Titolo: chiarimenti sulle librerie

>>>>>>>>>>>>

frequente per poi richiamarle in una qualsiasi mia applicazione?
Creati un file .h in cui metti tutte le funzioni, variabili e tipi di
dato che ti servono. Poi nel file in cui la usi la richiami con
#include "nome_file.h" o se è nel path di ricerca
#include <nomefile.h>
rhymes
rhy...@insieme.net

 #include <nomefile.h>
Questo procedimento non e' quasi mai vincente. Per headers di dimensioni
molto piccole (o -sigh- nei quali vi sia un qualche template, finche'
qualcuno non implementera' la keyword 'export'), inclusi in progetti molto
piccoli, puo' essere anche tollerato, altrimenti e' molto meglio conservare
negli headers solo le dichiarazioni, lasciando le definizioni al
corrispettivo file di implementazione (.cpp, per intenderci). Ne consegue un
enorme beneficio da molti punti di vista, tra i quali -punto
importantissimo!- la manutenibilita' del codice.
Ciao
Domenico Barra
Newsgroup: it.comp.lang.c++
Titolo: manuale

dove trovo un buon manuale per c++ ?
 --- postato da : 
http://www.sitebylara.it/news
 --- leggi e posta sui news 
italiani, per segnalare abusi 
webm...@sitebylara.it


e' una strafaq - cerca li', oppure nei vecchi post con google.
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://www.cs.unibo.it/~mbellett
Linux registered user 299762 @ Linux registered machine 213003
Newsgroup: it.comp.lang.c++
Titolo: In VB si chiamava DoEvents; e in VC++4?

Avete capito cosa vi sto chiedendo, no?
Cmq aggiungo che il VC++ abita sopra un WNT4w, a sua volta sorretto da un
P200MMX.
E.G. er Cicca
er_c...@usa.net
Art. 1: L'Italia è una repubblica progettata per Windows 95.


wrote:


Newsgroup: it.comp.lang.c++
Titolo: [Help] Manipolazione di files in ASCII e Array..

Ciao a tutti dell'ng e non...
Vi ringrazio x l'aiuto...
Vorrei creare un array di obj fstream ( in o output );
qual'è la sintassi: intendo dire che ho provato a inizializzarli come un
normale array ma, chiaramente nn ha funzionato ( mi renderebbe davvero la
vita + facile... )..
Ciao,  Daniele

 ha scritto nel messaggio
news:gABc8.1636$3s4....@news1.tin.it...

fstream vect[size];
for(fstream *p=vect; p > vect+size; ++p)
    p->open(...);
La tua domanda è molto generica...sarebbe stato opportuno postare anche
qualche bozza di codice.
Saluti

Newsgroup: it.comp.lang.c++
Titolo: Clearing screen in VisualC++6.0

Salve a tutti.
Ho un problema sulla cancellazione dello schermo in VisualC++ 6.0
Conosco un solo modo per cancellare lo schermo: includere la libreria
<conio.h> e poi utilizzare la funzione clrscr()   ( almeno questo è quello
che facevo utilizzando TurboC++ 3.0).
Tuttavia, pur includendo <conio.h> nelle istruziuoni al preprocessore, la
funzione clrscr()  rimane sconosciuta in VisualC++6.0
Esiste dunque una qualche altra libreria in Visualc++6.0  o qualche altro
metodo per cancellare lo schermo all'inizio dell'esecuzione di un programma?
Inoltre per quale motivo clrscr() funziona in turboc++ e non in VisualC++
pur includendo la stessa libreria?
Grazie
Alessandro Dalla Volta

Che io sappia il problema col Visual C++ 6 e'che la Microsoft non vuole
che la gente continui a sviluppare per Dos, e quindi molte delle vecchie
funzioni che avevano a che fare col Dos o coi programmi da console non
funzionano piu' per questo. In MSDN ci sono dei tutorial che spiegano come
fare i programmi da console ma la cosa diventa piuttosto complicata.
_dave_

Newsgroup: it.comp.lang.c++
Titolo: specializzazione dei template

Ciao a tutti,
	vorrei specializzare una classe template, ma con il codice che segue
il MS VC++ 6.0 mi dice:
 'X<int,T>' : template class has already been defined as a
non-template class
Ma non e' standard cio' che ho scritto?
Qualcuno conosce la sintassi per fargli digerire una cosa del genere?
Grazie
       Stefano
#include <string>
#include <iostream>
using namespace std;
template<class T,class Z> 
class X
{
public:
	X(){}
	~X(){}
	void show(T t,Z z)
	{
		cout<<t<<"  "<<z<<endl;
	}
};
template<class Z> 
class X<int,Z>
{
public:
	X(){}
	~X(){}
	void show(int t,Z z)
	{
		cout<<"int version "<<t<<" "<<z<<endl;
	}
};
int main()
{
	X<string,double> x;
	x.show("ciao",10.1);
	return 0;
}

 Qualcuno conosce la sintassi per fargli digerire una cosa del genere?
E' il tuo compilatore che non e' standard: non supporta la
specializzazione parziale dei template.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: io non bloccante

come funziona un programma tipo server irc?
intendo:
un programma che mi invii sempre a schermo informazioni su cosa sta facendo,
e contemporaneamente legga tutto quello che viene scritto sulla tastiera
senza fermare mai l'esecuzione.
grazie,
alex


Dipende dalla piattaforma e dall'architettura dell'applicazione: si puň usare
I/O demultiplexing (select() su *nix, WaitForMultipleObject con Win32),
multithreading, o qualche altra diavoleria che l'OS ti metta a disposizione.
Ma tutto questo č assolutamente OT in questa sede!
Max
Newsgroup: it.comp.lang.c++
Titolo: Keyword asm

Salve a tutti, ho provato a fare questa funzione utilizzando
l'interrupt 10 per disegnare una linea di lunghezza "lenght" e
spessore "spess"; inserita in un main e compilata non da problemi, ma
non fa neanche niente; sapete dirmi dove sbaglio? 
void draw(int xStart, int yStart, int lenght, int spess)
{
    asm mov AH,00
    asm mov AL,12
    asm int 10
    for (int i=0; i<spess; i++, yStart++ )
    {
		for (int k=0; k<lenght; k++, xStart++)
		{
			asm mov AH,0Ch
		//  asm mov AL,20h
			asm	mov BH,00h
			asm	mov CX,yStart
			asm	mov DX,xStart
			asm	int 10h
		}
	}
}
Saluti da Narciso,
Oh let the sun beat down upon my face
Stars to fill my dreams

     asm mov AL,12
Se il compilatore non si arrabbia allora non č standard. Secondo lo
standard la sintassi corretta č:
asm-definition :
    asm ( string-litaral ) ;
per cui avresti dovuto scrivere
    asm ( "mov AH,00" );
In ogni caso se il codice non fa nulla č probabile che il sistema
operativo non ti stia dando accesso all'HW. Che sistema operativo usi?
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556


Uso Windows '98
 
              Col. Aureliano Buendia
-._.-._.-._.-._.-._.-._.-._.-._.-._.-._._.-._.-._.-._.-._
Dammi la forza di tollerare le cose che non posso cambiare
Dammi la forza di cambiare le cose che non posso tollerare
Dammi la forza di distinguere le une dalle altre                 
-._.-._.-._.-._.-._._.-._.-._.-._.-._._.-._.-._.-._.-._._.

 Uso Windows '98
Appunto. Sotto Win98 le applicazioni windows sono a 32 bit e non possono
accedere direttamente a nessun dispositivo HW. Ne tantomeno lanciare
degli interrupt SW.


spessore "spess"; inserita in un main e compilata non da problemi,
Se compilata non da' problemi, puo' darsi che il problema
sia nel tipo di operazione che fai.  In tal caso, rivolgiti
a un ng specifico per l'assembly e/o la grafica.
p.s.: in inglese si dice "length".
-- 
The Follet
Newsgroup: it.comp.lang.c++
Titolo: problemi con iteratori a vettori di classi derivate

Salve,
ho il seguente problema - il seguente e' un programma semplificato:
#include <vector>
#include <iostream>
class Base{
public:
	typedef Base* iterator;
   virtual iterator GetBegin() = 0;
   virtual void Dump() = 0;
   virtual void Initialize() = 0;
};
class Derivata : public Base {
   std::vector<Derivata> vettoreDiDerivate;
public:
   Derivata(){}
   virtual iterator GetBegin() {return vettoreDiDerivate.begin();}
   virtual void Dump(){std::cout << vettoreDiDerivate.size() <<
std::endl;}
   virtual void Initialize(){
	   for(int i = 0; i < 100; i++){
		   Derivata* d = new Derivata(); 
		   vettoreDiDerivate.push_back(*d);
	   }
   }
};
int main(){
   Base* b = new Derivata();
   b->Initialize();
   b->Dump();
   Base* b1 = b->GetBegin();
   b1->Dump();
   return 0;
}
In questo programma ho una classe Base e una classe Derivata
e fin qui' tutto bene (credo): vettoreDiDerivate.begin() e' un
iteratore - che nel caso di vettore e' un oggetto di tipo Derivata* -
che puo' essere convertito automaticamente in un Base* come valore di
ritorno di GetBegin. Il programma compila e runna come atteso, dandomi
in output 100 e 0
Ora modifico il programma per avere il comportamento che vorrei nel
main (come utente di Base e Derivata, presumibilmente linkate dentro
una libreria di cui main() fa uso)
int main()
{
  int main(){
   Base* b = new Derivata();
   b->Initialize();
   b->Dump();
   Base::iterator b1 = b->GetBegin();
   b1->Dump();
   b1++;
   b1->Dump();
   return 0;
}
e naturalmente mi da' un access violation, perche' incrementando
l'iteratore b1 non si punta alla successiva Derivata.
Il mio problema e' come implementare questo comportamento nel main
senza modificare troppo Base e Derivata. In pratica io vorrei che
l'operatore ++ applicato ad un iteratore definito in Base facesse
passare al successivo elemento del vettoreDiDerivate, rimanendo di
tipo Base* per sfuttare il polimorfismo.
C'e' qualcuno che ha idee e/o commenti?

 tipo Base* per sfuttare il polimorfismo.
Se vuoi che l'iteratore sia un Base*, non lo puoi fare. 
Se vuoi implementare l'interatore come una classe, devi tenere presente che 
l'operazione di incremento non può prescindere da tipo effettivo 
soggiacente e dal container. Nel tuo caso, se tutte le possibli derivate si 
devono comportare come vettori, te la cavi facilmente (1) aggiungendo a 
Base un metodo, diciamo: 
  Base* get_element( size_t index ) = 0;
che, dato un indice, restituisca l'oggetto a quella posizione, e (2) 
implementando l'iteratore come una classe che contenga un riferimento a 
Base (cioè il container che l'ha generato) e un intero che rappresenti 
l'indice.
Se invece vuoi un iteratore che astragga completamente dal tipo di 
container sottostante, le cose si fanno un pochino più complicate. Ma mi 
fermo qui, ché ormai è notte fonda.
Max

 fermo qui, ché ormai è notte fonda.
sarebbe bastato usare container con puntatori e non con classi e il 70% dei
problemi seli sarebbe levati dalle scatole ...
ciao
Newsgroup: it.comp.lang.c++
Titolo: Chiedo aiuto

Sono un novellino che vorrebbe capire qualcosa sul c++....
c'e qualche buon anima che ha da perdere un po' di tempo?
oppure qualcuno che mi dice dove trovare materiale er iniziare a
studiacchiare un po?
Grazie,
Riccardo.

Puoi provare a cercare su 
www.programmazione.it
 il tutorial di Paolo
Marotta. Li trovi anche le FAQ di questo newsgroup, dove ci sono un po'
di consigli.
Ciao,
Nicola

Riccardo.
Ciao e buon lavoro

Newsgroup: it.comp.lang.c++
Titolo: costruttori di conversione

Salve a tutti. Supponendo di avere una classe definita come segue:
class My_class {
public:
    My_class() : x_(0) {}
    My_class(int x) : x_(x) {}
private:
    int x_;
};
E supponendo di eseguire un assegnamento del tipo:
My_class mycl;
mycl = 100;
La mia domanda è: l'assegnamento indicato funziona perché viene visto come
mycl = My_class(100) oppure perché il compilatore ha generato
automaticamente un operator=(int) ?
    Marco

 automaticamente un operator=(int) ?
La prima che hai detto. Il compilatore genera automaticamente solo un
eventuale
My_class & operator= (const My_class &);
Ciao,
Nicola

 automaticamente un operator=(int) ?
la prima che hai detto.
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Newsgroup: it.comp.lang.c++
Titolo: come collegare più sorgenti...

Sto creando un programma di Call Center in dos gestito con i file; ho
intezione di creare diversi cpp per poi collegarli assieme come faccio..?
che sintassi devo usare per richiamare il main presente in un altro sorgente
cpp..?? anche se incluso già nel progetto iul semplice richiamo mi da errore
che la funzione non è presente..
Grazie, Ciao
Corti



Queste domande sono molto molto di base. Direi che ti conviene prendere un
buon manuale di C++ o leggere quello online di Eckel.
Devi sostanzialmente includere l'header e poi linkare tutti i file oggetto.
Quale ambiente di programmazione usi?
-- 
RiK0

Newsgroup: it.comp.lang.c++
Titolo: link per programmi esempio uso c++

Salve, qualcuno potrebbe darmi qualche link su dove trovare degli esempi di
programmi  in c++ soprattutto per alberi rb e cammini di ricerca minimi.
io non riesco a trovare niente su questi argomenti in c++.
Ciao e grazie



Se hai sotto mano una biblioteca, prova sul Sedgewick: Algoritmi in C++.
IMHO qualcosa dovrebbe esserci.
-- 
[ RiK0                                ]
[ non credo negli schemi non vincenti ]
[ two is an odd prime number          ]

 ha scritto nel messaggio
news:ruBCd.14524$_E5.3...@twister2.libero.it...

Guarda questo link:
http://www.brpreiss.com/books/opus4/html/page9.html
Qui hai un esempio di implementazione di minimal spanning tree:
http://www.brpreiss.com/books/opus4/html/page578.html#SECTION0017511000000000000000
Maurus
Newsgroup: it.comp.lang.c++
Titolo: Urgentissimo Aiuto

Scusate forse esco fuori tema, ma ho bisogno di  aiuto. Sono un
principiante e vorrei crearmi un server per mettere in rete una dei
servizi ad esempio spazio per delle pagine web, dei servizi di
e-commerce e cosě via. Vorrei sapere quali libri mi possono aiutare ad
iniziare e poi a specializzarmi nella costruzione di questo server a
livello hardware ed anche a livello software. Inoltre voi che sistema
operativo mi consigliate di usare e perché? Vi ringrazio fin da ora per
la vostra attenzione e vi prego rispondetemi se potete.
Andrea
PS Se vi č possibile rispondetemi direttamente alla mia e-mail
andr...@tin.it
, grazie ancora

 operativo mi consigliate di usare e perché?
Unix = maggiori funzionalità e più personalizzabile (Linux)
WinNT = semplicità d'uso
Phones

Newsgroup: it.comp.lang.c++
Titolo: ricerca di directory





Ciao a tutti! vorrei sapere come si fa a scansionare l'hard 
disk alla ricerca di una determinata directory.Grazie in  anticipo a 
chiunqe mi risponderà. Ciao







vorrei sapere come si fa a scansionare l'hard disk alla 
ricerca di una directory. grazie a chiunque mi risponderà.


ciao
Newsgroup: it.comp.lang.c++
Titolo: R: Sto perdendo già la pazienza...

Per scrupolo vi riporto anche le righe di codice :
#include <iostream.h>
main
{
  cout << "Il mio primo programma in c++.";
return 0;
}

 wrote in message
news:a4l9hq$3n7$1...@fe2.cs.interbusiness.it...



Ti ringrazio della risposta, ma ho il dubbio di essere un deficiente...
Ho seguito il tuo consiglio e ho scaricato borland 5.5.
Se lancio l'applicazione da windows mi si apre x un secondo una finestra di
dos e mi si richiude.
Cosě suppongo che l'applicazione devo lanciarla da dos o almeno dal prompt
di dos.
Lancio l'applicazione da dos e mi viene una lista di opzioni da aggiungere
al file esguibile che lancio cioč bcc32.exe
Opzioni delle quali naturalmente nn capisco niente.
Leggo le minime istruzioni in inglese del borland 5.5 e mi dice che devo far
seguire a bcc32.exe il nome del file nel quale voglio inserire le mie righe
di codice.
Provo a scrivere bcc32.exe nuovo.cpp e mi dice che nn esiste e infatti mica
ce l'ho un file da aprire.
Mi domando ma dove diavolo devo scrivere il mio codice?
Per favore perchč sono alla frutta =((((( fate conto di fare beneficienza
rispondendomi) Grazie
S@mu

 rispondendomi) Grazie
Prego.

 wrote in message
news:a4ldis$7et$1...@fe1.cs.interbusiness.it...



S@mu
Ok, per ora lascia perdere le opzioni fornite dal compilatore;
ti basti sapere che le fasi per compilare sono le seguenti:
scrivi il programma e salvato magari con estensione cpp in una
cartella qualsiasi (es: c:\prove).
Lancia il prompt del dos e portati in tale cartella (cd prove).
Se il file si chiama prova.cpp devi digitare BCC32 PROVA.CPP.
Se naturalmente non incontra errori il compilatore otterrai il tuo
eseguibile prova.exe.
Spero tu abbia settato correttamente le variabili d'ambiente riferite
al compilatore.
Ciao

main
qui dovrebbe essere almeno:
 main()
essa è una funzione


 di dos.
Prova ad agguingere come ultima linea del main, prima dell'eventuale return,
una cosa tipo std::cin.get(), oppure, visto che sei sotto Win, una
std::system("pause"). In questo modo blocchi il programma subito prima che
venga chiuso, e non hai bisogno di richiamarlo dal prompt. Dai anche
un'occhiata alle FAQ su 
http://cpp.programmazione.it
Ciao,
Cecco

 wrote in message
8aub8.64162$om6.1...@news1.tin.it...


essa è una funzione
In C++ non esiste la deduzione implicita del tipo del valore
di ritorno da una funzione (che invece era presente nel C K&R).
In C++ e' obbligatorio scrivere
  int main()
  {
    ...
  }
Andrea
Newsgroup: it.comp.lang.c++
Titolo: Array di oggetti in VC++

Salve sto cercando di finire il mio prim programmino usando directdraw7 che
dovrebbe essere un campo stellato stile screen saver si windows :
Mi sono creato Una classe Cstar cosi definita :
class CStar
{
  public:              // Metodi Della Stella
  CStar();              // Costruttore
  ~CStar();             // Distruttore
  void setxpos (int x);
  void setypos (int y);
  void setzpos (int z);
  int getxpos ();
  int getypos ();
  int getzpos ();
  void setrapp_xpos (int x);
  void setrapp_ypos (int y);
  int  getrapp_xpos ();
  int  getrapp_ypos ();
  private:
  int xpos;           // Coordinate (Reali) della Stella
  int ypos;           // x, y, z
  int zpos;           //
  int rapp_xpos;      // Coordinate di Rappresentazione x , y
  int rapp_ypos;      //
};
poi mi sono creato un Array di puntatori di oggetti Cstar :
CStar                       *CampoStellato[MAXSTARS];     // Array di Stelle
come mai se chiamo la seguente funzione :
void
InitStarfield()
{
 int             c = 1;
  // Inizializzazione coordinate del campo stellato
    for ( c= 0; c < MAXSTARS; c++){
      CampoStellato[c]->setxpos((rand() % MIDX*2) - MIDX);
      CampoStellato[c]->setypos((rand() % MIDY*2) - MIDY);
      CampoStellato[c]->setzpos((rand() % MAXDISTANCE) -
      MAXDISTANCE/2);
   }
}
Il programma mi va in errore di protezione della memoria
(succede ance se metto una riga del tipo) :
CampoStellato[1]->setypos((rand() % MIDY*2) - MIDY);
Secondo me il problema è nella dichiarazione dell' array visto che sono un
neofita del C++.
Vi ringrazio in anticipo
MarK "A.D.E"

CStar     *CampoStellato[MAXSTARS];     // Array di Stelle
e' di fatto un array di puntatori ad oggetto che *non* sono ancora stati
creati,
quindi devi prima fare un bel loop tipo
for (int i = 0; i < MAXSTARS; i++)
    CampoStellato[i] = new CStar();
Ricordati prima di uscire dal programma di cancellare tutti gli oggetti
sempre manualmente;
for (int i = 0; i < MAXSTARS; i++)
    delete CampoStellato[i];
Newsgroup: it.comp.lang.c++
Titolo: KAI C++

C'e` qualcuno che usa il compilatore KAI C++ ?
Mi ricordo che Alex Martelli (ma che fine ha fatto ?)
sosteneva che fosse il migliore compilatore C++ in
circolazione.
Ho visto che sulla pagina web sarebbe supportata la mia
piattaforma (ix86, Linux).
Ma almeno per uso personale e` free ?
Grazie.
-- 
Roberto Gerola
Email: 
robert...@penguinpowered.com
WWW: 
http://www.penguinpowered.com/~The_Cpp_Compass

 Ma almeno per uso personale e` free ?
Noi lo comperiamo attraverso l'ente americano a cui siamo associati
per un progetto di ricerca nella fisica delle alte energie (il Fermi
National Accelerator Lab vicino a Chicago); tieni conto che FNAL ha
acquistato licenze KAI in numeri dell'ordine delle CENTINAIA.  Sotto
queste condizioni, una distribuzione per Linux costa attorno ai 300
US$ + tasse (7.5%) come minimo (le cose cambiano se vuoi assistenza
telefonica o via net, aggiornamenti successivi, licenze multiutente e
via dicendo).  Le licenze per le altre piattaforme costano abbastanza
di piu'.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

di piu'.
Cio` vuol dire che per il momento me lo sogno :-(.
Grazie per le preziose informazioni.

Newsgroup: it.comp.lang.c++
Titolo: Reference ?!?!

Ho creato questa classe:
class TAlpha{
  public:
        int &delta;
        int pos;
        TAlpha(int &de, int posx){
                delta=de;
                pos=posx;
                };
};
E mi contiuna a dare l'errore:
Reference member 'TAlpha::delta' is not initialized
Allora come si deve usare (inizializzare) un reference in una classe?
Mentre che ci sono faccio un'altra domanda:
ho
vector<int> vettore;
ad un certo punto del programma ho bisogno un vettore di 10 elementi, come
posso fare? devo necessariamente fare:
vettore.clear();
for (i=0; i<10; i++)
        vettore.push_back(0);
Ringrazio chi mi vorrà rispondere

         vettore.push_back(0);
vettore.resize(10);
Ciao,
Nicola

TAlpha::TAlpha(int &de, int posx) : delta(de), pos(posx) {}
aggiungerei che non mi sembra una pratica molto salutare avere un
reference come membro (in questo caso; ci sono dei casi in cui è
utile?)...
Anto
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

 utile?)...
In effetti e' pericoloso, perche' la garanzia sulla durata del lifetime
dell'oggetto riferito e' solo implicita e non e' sostanzialmente
possibile controllare e gestire situazioni di errore.
Potrebbe pero' risultare un modo pratico per realizzare classi wrapper
intorno ad oggetti gia' esistenti. Un'idea che mi gira in testa da
qualche tempo e' una classe fixed_string per avviluppare i string
literal.
Ciao,
Nicola



più precisamente che vantaggi comporterebbe? La garanzia di non
scriverci sopra?


 scriverci sopra?
Ne dubito. In teoria quella garanzia e' gia' data dal fatto che uno string
literal e' un const. Salvo il fatto che poi tu puoi sempre bypassare il const,
ma questo vale anche per classe, se solo ti permette di ottenere un puntatore al
literal.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 scriverci sopra?
Se fosse un tipo standard permetterebbe un alto livello di efficienza
combinato con un miglior supporto della libreria standard di quanto non
avvenga con gli attuali literal. Se ci pensi, la maggior parte delle
stringhe non vengono modificate sul posto e penso che un tipo "stringa
immutabile" sarebbe una buona idea.
Nel mio caso sarebbe solo un giocattolo (ad esempio definirei
fixed_string_iterator in modo da rappresentare end() con il confronto
diretto con '\0', invece di dover chiamare strlen() come avviene con i
puntatori).
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Thread in C

Come faccio una classe che usa i Thread in VisualC++? Che librerie devo
includere? Come devo dichiarare la classe?
Grazie a chi mi risponderą!
Sapete un sito dove posso trovare TUTTO quello che puo servire sul C++



Sei OT, e poi creare un thread in VC++ č banale se hai i docs.
Luc.

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
forums.borland.com
 (in inglese)
Grazie,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: Linkare un file .lib con Borland C++ 5.5

Salve, tramite linea di comando, come si fa a linkare un file .lib? Grazie
in anticipo a chi mi risponderà. Bye

 in anticipo a chi mi risponderà. Bye
server news borland
news.borland.com

Newsgroup: it.comp.lang.c++
Titolo: cosa sono le API?

salve salvino a tutti. scusate la mia ignoranza, ma è da poco che mi 
sto occupando di c/c++ e di programmazione sotto windows; qualcuno 
gentilmete potrebbe spiegarmi precisamente cosa sono le API, di cui sento 
parlare? inoltre io posseggo borland c++, che come ben sprete ha anche un 
compilatore  per win 3.1 (è una versione un po' vecchia la mia). con 
questo compilatore posso tranquillamente compilare programmi anche per 
windows o non è molto indicato?
grazie a tutti per la disponibilità e ciao.

API e' un acronimo di Application Program Interface (se non ricordo male) ed
in parole povere sono le funzioni che il sistema (o altri) forniscono per
interfacciarsi alle varie parti del sistema operativo, macchinari, etc. Ad
esempio le API di Windows sono quelle che ti permettono di creare, aprire,
chiudere finestre, etc. Ci son opoi API specifiche come ad esempio quelle
per l'uso del telefono TAPI e cosi' via.
Ciao.
Antonio Donatiello

>API e' un acronimo di Application Program Interface (se non ricordo male)
Ricordi male: le API sono quei fastidiosissimi insetti che se ti pungono ti
fanno tanto male :-)
Arrileggerci!
P. S.: Se ho capito bene, caro TMM, ti riferivi al Borland Turbo C++ 3.1 o
qualcosa di simile. Se è così sappi che adesso siamo giunti alla 5.0, quindi
se vuoi programmare per Win 3.11 (Dio mio che scassone!!!) puoi anche
continuare ad usarlo, ma le terribili api assassine che brulicano in
Finestre '95 devono essere domate con qualcosa di meno antiquato. Che cosa?
Be', se vuoi un RAD c'è Visual Basic (che, detta come va detta, va a
pedali), poi c'è il classico Delphi 1&2&3 (anche se è scritto in Pascal), ma
ci sono anche gli ottimi Vc++ e Borland C++ 5.0, che utilizzano OWL, MFC,
API, TAPI, MAPI (oddio sto impazzendo!!!). Una buona alternativa potrebbe
essere il C++ Builder (della Borland), ahimé basato sull'Object Pascal come
Delphi (anche se, ovviamente, compila pure il C++).

Newsgroup: it.comp.lang.c++
Titolo: EXE converter

Is there any software available that convert .exe file to .c file?
makinen

 makinen
I don't know one in particular, but you have to looking for a 
"disassembler".
google("disassembler exe c") ==> 9.190 results!
good luck...
bye
-- 
__________________________________
"Ama e fai c'ho che vuoi".... 
__________________________________

 Is there any software available that convert .exe file to .c file?
Yes! Search the internet for "Lt. Cmdr. Data", "USS Enterprise".
:) 
-- 
Luc.

Is there any converter make a .exe file to .c file or .txt file?
Thanks.
Newsgroup: it.comp.lang.c++
Titolo: gcc in Windows

Salve,
ho scritto la mia bella (?) libreria di imaging sotto linux e usando GCC.
Ho sfruttato tutte le estensioni possibili al C/C++ che questo 
compilatore offre, oltre a OpenMP, fiducioso che GCC era stato portato 
su diverse piattaforme pensavo che anche la mia libreria potesse esserlo!
Invece, al momento di portare la mia libreria su Windows mi accorgo che 
GCC è fermo a vecchie versioni (<4.0) e quelle più recenti 
(sperimentali!) sono instabili e generano codice altrettanto instabile.
L'unico porting di gcc è Cygwin?
Vi prego ditemi che mi sbaglio!

GCC è fermo a vecchie versioni (<4.0) 
Usando il servizio ZipPicker di 
www.delorie.com
 io arrivo a prelevare
fino alla 4.23 (di febbraio 2008; l'ultimissima è la 4.3.0 del 5
marzo).


No, c'e' anche MinGW: 
http://www.mingw.org/
Ciao,
Nicola

 Nicola
purtroppo è fermo alla versione 3.4.5 di gcc.


Come versione ufficiale si, ma se vai a vedere sul sito SourceForge
vedrai che ci sono versioni "sperimentali" di 4.2.1 e 4.3.0.
Di certo lo stato di gcc sotto Windows e' notevolmente peggiorato
negli ultimi anni. Evidentemente a pochi interessa investirci.
Ciao,
Nicola

 negli ultimi anni. Evidentemente a pochi interessa investirci.
quindi l'alternativa è il compilatore dell'Intel o Visual Studio?
Ciao

 marzo).
Per quanto sia un niubbo e usi soprattutto il C, devo dire che anche io 
mi trovo molto bene con 
www.delorie.com
 e il loro DJGPP 
(
http://www.delorie.com/djgpp/doc/eli-m17n99.html
).
Ciao,
Giulio
-- 
OnAir:
http://www.giuliopetrucci.it
http://www.fujikomonamour.com
Newsgroup: it.comp.lang.c++
Titolo: Cerco un manuale di C++

Ciao, vorrei iniziare a programmare in C++, ma visto che le mie basi
comprendono solo il Pascal, il Basic e pochissimo di Java avrei bisogno di
un manuale. Qualcuno sa dove potrei trovarne uno magari da scaricare
gratuitamente dalla rete (e magari in italiano)? La mia e-mail č
gra...@libero.it
 e ringrazio anticipatamente chiunque mi voglia offrire il
suo aiuto. Ciao ciao.

 gratuitamente dalla rete (e magari in italiano)? La mia e-mail è


>
Se hai voglia di stamparti un failone ce il libro TICAC++ di Bruce Eckel che ti
spiega npo la filosofia del C++ ma e un file da 1.4 mega (->.rtf diventano 8!)
Lo trovi sui vari link (anche C++ warriors....)
-----------------------
Un uomo con un orologio e sempre sicuro di che ora e' , un uomo con 2 orologi non lo e' mai!
GYps!

Newsgroup: it.comp.lang.c++
Titolo: errore su C++Builder 5.0 (o e' 5.5?)

Dunque, innanzi tutto un grazie a quelli che mi hanno risposto al
precedente msg; ma veniamo al punto.
Ho notato una cosa curiosa (andro' un po' a spanne perche' non me lo
ricordo bene...) nel codice seguente:
//file header
class unaQualsiasi : public TComponent{
   private:
      unsigned int unNumero;
   public:
      unaQualsiasi(TComponent * component);
      ~unaQualsiasi();
   __published:
      __property unsigned int Numero={read=unNumero, write=unNumero};
   }
ps. tra virgolette ho indicato i miei meravigliosi termini tecnici...
abbiate pazienza.
Ora, creato il nuovo componente, compilato e "messo nella barra degli
strumenti" a dovere, creo un progetto con un form e gli "metto dentro"
il mio nuovo componente. Clicco nell'Object Inspector alla sinistra sul
campo 'Numero' e TENTO di scriverci qualcosa. Fatto sta che mi da' una
dialog di errore con scritto: 'il numero dev'essere compreso tra -1 e
0'!!!!! (OVVIAMENTE deve essere cosi'... ma andando nell'altro senso
pero'!). Risultato: impossibile avere un campo unsigned.
Ecco, tutto qui, volevo solo dire questo. Se qualcuno ha la soluzione a
questo problema sarei estremamente grato di conoscerla, se invece non
c'e' allora alla Borland hanno fatto un errore non da poco.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti

thank you

Newsgroup: it.comp.lang.c++
Titolo: le graffe!

Problema stupido se volete, ma con la tastiera italiana sono costretto a
usare ALT+123 e ALT+125 per le graffe? Non c'č un modo piů semplice? Ho
cercato qualche tipo di personalizzazione in Visual C++ 6, ma non ne ho
trovati tipo assegnazione di un tasto custom per un carattere speciale come
in word. Avendo io un portatile sono costretto ogni volta ad attivare i
tasti seconda funzione per avere il tastierino numerico che sulle tastiere
dei portatili come ben sapete non c'č.
--
Roberto
FV
----------
rob...@messora.com
ICQ# 37732681
----------
Membro di SFI Italy
Simulazioni PBEM di Star Trek
 
http://gioco.net/startrek
(Crusader, Highlander, Unicorn)
----------
Resistance is futile

CUT
SHIFT+CTRL+ALT+[
SHIFT+CTRL+ALT+]
Luc.

On Fri, 06 Oct 2000 12:19:41 +0200, a tenebrae messenger delivered me
a scroll with the sigil of Luc <TOGL...@katamail.com-TOGLI>, titled
"Re: le graffe!" written by Luc with his blood. The arcane words are:

oppure ALT GR+SHIFT+[ e ALT GR+SHIFT+]
Si risparmia un tasto e una mano :-)))
Sidewinder
---------------------------------------------------
"C'e' una luce in fondo al tunnel....
   ... E' Tux con il casco da minatore!"


Scomodo!!!! 8/
Luc.

 oppure ALT GR+SHIFT+[ e ALT GR+SHIFT+]
thx, thx


 dei portatili come ben sapete non c'è.

Newsgroup: it.comp.lang.c++
Titolo: La parola chave typename

Scusate l'ignoranza, ma ho scoperto questa nuova parola chiave del c++ di
cui ignoravo l'esistenza, so solo che riguarda i template e va sostituita al
costrutto class in alcuni casi(correggetemi se sbaglio): potreste spiegarmi
brevemente che
cos'è e dove viene utilizzata?
Magari consigliandomi anche qualche sito o tutorial in rete che lo spieghi
nel
dettaglio.
Ciao.

 cos'è e dove viene utilizzata?
ci sono due modi di utilizzare typename:
a) come sinonimo di "class" in una definizione di template:
        template<class T> T max(T,T);
        template<typename T> T max(T,T);
Sono la stessa identica cosa
b) per indicare che ti stai riferendo ad un tipo, utile sempre durante 
la stesura di template; ad esempio:
        template<class T> class Prova {
                typename T::some_type variabile;
        };
Senza il typename il compilatore non avrebbe modo di sapere se 
T::some_type e' un tipo di dato o no. Ovviamente per poter istanziare 
il template e' necessario che il parametro passatogli definisca anche 
il tipo some_type.
ciao 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

 il tipo some_type.
Scusami ma ho ancora qualche dubbio:
T č il tipo parametro e fin qui ci sono :-)))
Ma con "T::some_type variabile" accedi ad un tipo definito all'interno del
tipo T...e questo che intendi?
E che quindi il compilatore senza typename non č in grado di capire se
some_type sia un
tipo oppure no?
Ciao.

 il tipo some_type.
T::some_type cosa altro potrebbe essere oltre ad un tipo ?

 
Un membro.
Max

 tipo oppure no?
esatto. Piccolo esempio:
template<class T> foo_template {
        typename T::value_type my_var;
};
class bar {
public:
        typedef int value_type;
};
void prova() {
        foo_template<bar> a; // ok
        foo_template< std::vector<int> > b; // ok
        foo_template<int> c; // errore; non esiste alcun tipo int::value_type


 }
Grazie...questo esempio mi ha tolto ogni dubbio!
Ciao.

 Un membro.
Scusa ma non capisco; fammi un esempio per cortesia:
se fosse una funzione dovrebbe essere seguita da parentesi tonde;
se fosse un membro il primo token DEVE essere un tipo.

"Goffredo Baroncelli" <krei...@earthling.net.TOGLIMI> ha scritto nel
messaggio news:i25pt9...@therra.bhome...

struct A
{
  typedef int Int_t;
};
struct B
{
  static int Int_t;
};
template <typename T>
struct C
{
  int i;
  void f() { T::Int_t * i; }
// per C<A> i sarebbe un puntatore locale
// ad un tipo A::Int_t
// per C<B> moltiplicheresti i * B::Int_t.
// due soluzioni che si adattano entrambe,
// ma dal significato decisamente diverso
};
int main()
{
  C<A> ca;
  ca.f();
  C<B> cb;
  cb.f();
  return 0;
}
ciao
Massimo