mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: varargs & C++ (GCC -> VC 2005)

Stavo provando a modificare un programma scritto tempo fa in modo da 
compilare oltre che con il gcc anche con il Visual Studio, mi sono 
scontrato con un problema sulle varargs:
Il programma contiene una libreria che ha alcuni metodi che usano le 
varargs per tutti i parametri, la sintassi delle chiamate e' di questo tipo:
class C {
   void foo(...)
   {
     // alcune inizializzazioni sui dati di C...
     va_list va;
     va_start(va, this);
     // passo la lista di parametri a una funzione ESTERNA
     // che si aspetta un va_list
     va_end(va);
   }
};
Come si puo' notare viene utilizzato il this come "primo parametro", e 
la cosa funziona con il GCC, sicuramente e` implementation defined il 
fatto che this sia il primo parametro di una funzione quando la funzione 
e` il metodo, mi chiedevo se c'era il modo per far qualcosa di simile 
con il visual studio, google non ha dato alcun esito...
Non posso ridefinire la funzione per avere un primo parametro fisso 
purtroppo perche` ho bisogno di passare una va_list intera ad una 
funzione esterna su cui non ho controllo...
Bye,
  Gabry

 funzione esterna su cui non ho controllo...
Non dovrebbe cambiare nulla: se anche aggiungi un parametro al metodo, 
basta ceh dopo usi quel parametro al posto di this nella va_start e la 
va_list che passi alla tua funzione esterna e' esattamente la stessa.
ciao
Giacomo

 va_list che passi alla tua funzione esterna e' esattamente la stessa.
Mettiamo che la funzione che voglio chiamare sia una:
vfoo(FILE *, va_list);
come faccio a convertire la cosa se devo avere foo con un parametro (di 
cui non so il tipo)?
caso A:
class C {
	FILE *file_;
	void foo(...) {
		va_list va;
		va_start(va, this);
		vfoo(file_, va);
		va_end(va);
	}
};
caso B:
class C {
	FILE *file_;
	template <typename T>
	void foo(T first, ...) {
		va_list va;
		va_start(va, first);
// 		vfoo(file_, va); ??!?!?!? come gli passo anche "first"?
		va_end(va);
	}
};
Secondo me non c'e' modo di ottenere questo risultato in C++ standard 
senza ricorrere a qualche stratagemma del compilatore, per questo 
chiedevo se qualcuno conosceva un modo per farlo col visual studio :)

 };
 > caso B:
[...]
 > Secondo me non c'e' modo di ottenere questo risultato in C++ standard
 > senza ricorrere a qualche stratagemma del compilatore, per questo
 > chiedevo se qualcuno conosceva un modo per farlo col visual studio :)
Sul caso B ho non so darti una risposta, probabilmente devi
chiedere su qyalche newsgroup piu' specifico sui prodotti MS.
ciao
Giacomo

> };
Bye,
  Gabry

 (che non e' detto tra l'altro che sia int)!
Beh, si tratta di un parametro dummy che devi per forza aggiungere
per essere compatibile con il "..." che vuole almeno un parametro.
Pero' ti costringe ad aggiungerlo anche in tutti i punti dove chiami
il tuo metodo... non e' certo comodo! :)
ciao
Giacomo
Newsgroup: it.comp.lang.c++
Titolo: errore: redefinition of

Ciao a tutti spero possiate aiutarmi.
non capisco questo errore e non ne vengo a capo:
ho una classe NomeClasse.cpp, col suo NomeClasse.h.
in NomeClasse.h metto un include a general.h dove ho definito una struct 
di nome NomeStruct.
nei metodi definiti in NomeClasse.h fra i parametri passati vi č una 
variabile di tipo NomeStruct.
della classe NomeClasse viene creato un oggetto nel file principale. 
Anche nel file principale č incluso general.h
ebbene:
quando compilo col comando seguente:
-g -lm -lpthread -lsim_std -Wall ...
mi da l'errore: redefinition of "struct NomeStruct".
Ma dov'č l'errore? non mi pare di aver ridefinito nulla in piů.
Spero che non sia un bug e che mi sappiate aiutare!
grazie,
Stefano

correggo, il comando usato č:
g++ -g -lm -lpthread -lsim_std -Wall


 Ma dov'è l'errore? non mi pare di aver ridefinito nulla in più.


Presuppongo che non sono espertissimo....ma hai dichiarato extern la
struct??? hai usato il giusto modo di visualizzazione?? es:
general::nomeStruct ??? spero di esserti d'aiuto
"ste" <s...@ste.te> ha scritto nel messaggio
news:aZaPd.18132$6f....@charlie.risq.qc.ca...


>Ma dov'è l'errore? non mi pare di aver ridefinito nulla in più.


Newsgroup: it.comp.lang.c++
Titolo: autoexec.bat (info)

Come posso far in modo di avviare un prog (MS-DOS) prima dell'avvio di Win?
e quindi dopo averlo terminato avviare Win
P.s Forse è un po O.T. mi scuso subito :-)
P.S.S. La domanda è stupida ma anche io ...... ;-)
Bye
Avogrado



Come posso far in modo di avviare un prog (MS-DOS) prima dell'avvio di Win?
e quindi dopo averlo terminato avviare Win
P.s Forse è un po O.T. mi scuso subito :-)
P.S.S. La domanda è stupida certo,
pure io ...... ;-)
Bye
Avogrado
Newsgroup: it.comp.lang.c++
Titolo: Costruttori e distruttori

Ho subito un corso introduttivo obbligatorio di C++ (proprio da zero)
e mi sono trovato in difficoltà non appena il prof. ha smesso di
parlare di classi e puntatori e ha cominciato a trattare la
programmazione orientata agli oggetti. Bene o male tutti imparano ad
usare i comandi basilari per la programmazione di algoritmi semplici.
Tuttavia il corso ha presto iniziato a sommergerci di concetti mal
spiegati e per nulla approfonditi, con l'intenzione di insegnarci a
sfruttare le capacità di questo potente linguaggio senza dover
necessariamente farci tutta la teoria hardcore che si sorbiscono gli
studenti di informatica. Probabilmente questo rapido avvicendamento è
parso molto naturale e indolore al prof., ma di fatto la maggior parte
della classe non ci ha capito più niente. Concetti quali stack,
costruttori e distruttori, ereditarietà non sono intuitivi per i
principianti. Ho anche scaricato "Thinking in C++" sperando che
potesse aiutarmi a capire, ma al contrario si è rivelato un testo
lungo e più denso di quanto possa essere alla mia portata. Qualcuno
può indicarmi un buon sito o libro che non pretenda troppo dal
lettore, senza che per questo rinunci al rigore? O potreste magari
spiegarmi in poche righe i concetti fondamentali della programmazione
orientata agli oggetti, supponendo la mia conoscenze di programmazione
funzionale, oppure indirizzarmi a un vecchio post o a una FAQ in
proposito? Grazie mille in anticipo.

 ha scritto nel messaggio
news:de044e77.04063...@posting.google.com...


 Mirco
...e se non hai problemi con l'inglese della Deitel&Deitel: The Complete 
c++ training coure" 
(
http://vig.prenhall.com/catalog/academic/product/0,1144,0130895636,00.html
) 
che ha anche un CD con il corso interattivo da affiancare al libro.
Questo è la versione originale dei due libri che trovi in italiano ma in 
un unico volume e con il cd accluso.
matteo!
(analisifunzionale)

...


Newsgroup: it.comp.lang.c++
Titolo: Registry di Win9x...

Cercavo qualche bella funzioncina già pronta per accedere al registry!
Se ci fosse un'anima buona...
Grazie e ciao!
               --Please also reply via E-Mail--
                      4169522043485253

 Cercavo qualche bella funzioncina già pronta per accedere al registry!
Spostarsi in it.comp.programmare.win32.
Grazie.
EMG

Cercavo qualche bella funzioncina già pronta per accedere al registry!



ICQ #34602650
Newsgroup: it.comp.lang.c++
Titolo: string -> int

Come converto una variabile string a int senza ricorrere al cast stile C?
Grazie.

 Grazie.
 Ma le FAQ a che servono?
stringstream strstr;
string myStrnig;
int myInt;
.....
strstr << myString;
strstr >> myInt;
Ciao
Gaetano.
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 strstr >> myInt;
io ho dovuto fare:
string myStrnig;
int myInt;
stringstream strstr(myString);
strstr >> myInt;
perchè l'operatore "<<" non mi funziona su:
strstr << myString;
A parte questo, vorrei sapere come posso fare affinchè qualora in
myString ci sia una stringa "non numerica" venga riportato un errore.
-- 
Davide Cavallari

ehmmm dove le trovo le faq... :P 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

ehmmm dove le trovo le faq... :P 
cpp.programmazione.it
-- 
Marco Barisione (ICQ 84277092)

 ehmmm dove le trovo le faq... :P
cpp.programmazione.it
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: Help .lib ?

Salve , qualcuno sa dirmi come si utilizzano le librerie in borland C++ 4.5
?
In particolare sarei interessato alla funzione GetVolumeInformation che
l'help in linea
afferma appartenere a kernel32.lib.Non disponendo dei manuali in italiano ,
ho tentato di fare #include"kernel32.lib" ma il compilatore mi ha bloccato
senza pieta'.
Ringrazio anticipatamente per l'aiuto
     	                        	Guido Anselmi.			

guido anselmi (
gu...@medianetis.it
) wrote:
: ho tentato di fare #include"kernel32.lib" ma il compilatore mi ha bloccato
: senza pieta'.
Non puoi includerefile .lib, ma solo file sorgenti. Nel tuo caso
devi trovare il file hearder (.h) che contiene  il prototipo della funzione che
ti interessa, al resto pensera` il compilatore. Trattandosi  di un  file di
libreria, ti consiglio di usare la sintassi #include  <file.h> anzicche`
#include "file.h" .
Saluti,
Paolo

Newsgroup: it.comp.lang.c++
Titolo: Acquisto manuale

Vorrei acquistare un manuale che mi insegni la programmazione in c++.
Mi sono trovato di fronte due libri:
c++ giuda completa
guida al visual c++
Premesso che ho già visual c++, cosa mi consigliate di comprare?
Sono gradite anche delle indicazioni su altri libri.
Grazie

Sono gradite anche delle indicazioni su altri libri.
Guarda su 
cpp.programmazione.it
, ci sono le faq del ng dove sono
consigliati molti libri.
-- 
Marco Barisione (ICQ 84277092)

> c++ giuda completa
ROTFL
--
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
Newsgroup: it.comp.lang.c++
Titolo: Sito del newsgroup

Vorrei sapere qual'è il sito del newsgroup. Vorrei anche sapere un sito
ftp da cui scaricare una versione recente di Visual C++ .
Grazie.

Grazie.
http://www.gdf.it
Davide Marcato.
----------------------------------------------------
| -- Freelance International Consultant
| -- Windows/COM(+) Development & Training
| -- Technical Writer & Speaker
----------------------------------------------------
| -- Email: 
mar...@programmers.net
| -- Web: 
http://www.DavideMarcato.com
 (UPDATED!)
----------------------------------------------------

Newsgroup: it.comp.lang.c++
Titolo: ESPRESSIONI matematiche help

Stavo pensando a come fare una semplice calcolatrice che, dato in input l'espressione matematica, avrebbe dato come output il suo risultato. Dopo essermi tormentato su come gestire l'input delll'espressione (affinchè venisse interpretata dal programma e mi avrebbe dato come output il risultato desiderato) ecco l'idea:
char espressione = 1 + 2 + 3;
int totale = int(espressione);
cout <<totale;
Così facendo il risultato è 6 (e mi pare giusto). Pultroppo ora viene il punto dolente: l'input dalla tastiera (che nel lustato sopra non c'è):
char espressione;
cin >> espressione;
int totale = int(espressione);
cout <<totale;
(si noti che nella versione completa ovviamente non sarà int ma double per permettere espressioni con la virgola) .
Se provaste ad eseguire il listato vedreste che l'output sarebbe il numero di codice ASCII dell'input immesso. Coem posso farsichè l'output non sia il codice ASCII ma il risultato? Come mai nel primo listato (quello senza input da tastiera) tutto funzionava come dovuto e nel secondo (quello con input da tastiera) mi mostra il codice ASCII e non il risultato? dove ho sbagliato e come si fa a rimediare?
grazie in anticipo per l'aiuto
credici
cre...@infinito.it
----------------------------------------------
Virgilio Mail - Il tuo indirizzo E-mail gratis
http://mail.virgilio.it
--
Posted from [212.48.4.46] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
20000817213501.QEMX17490.mta1@[212.48.4.52]...



Non si può fare quello che dici tu. Devi scrivere ex-novo un programma
che legga uno per uno i caratteri della stringa e lio interpreti
secondo le convenzioni matematiche (e devi anche stare attenta alle
precedenze degli operatori ;-) ). Un programma del genere si chiama
"parser". Trovi qualche esempio su 
www.programmazione.it
Cmq non è certo l'ideale per iniziare a programmare, vista la
difficoltà. 
Ciao Anto
Antonio Cuni
ICQ: 82732649
VUOI GUADAGNARE RICEVENDO MESSAGGI SUL CELLULARE?
Ecco il sito che fa per te:
http://www.smscash.it/index.php3?pagid=reg&p_form=P&p_pres=0&cpre=218101&p_desc=1
Newsgroup: it.comp.lang.c++
Titolo: Problema con Visual C++ dell amicrosoft

Ciao,
ho un problema con visual C++ della microsoft. Se creo un'applicazione vuota
basata su finestre di dialogo e premo invio, mi chiude la finestra. Come
posso risolvere il problema?
Come posso gestire l'evento keydown di un controllo CEdit? Cerco di
spiegarmi meglio: Non riesco a trovare il modo di inserire l'evento. Come
posso fare?
Ciao e grazie


dalla ClassView aggiungi il metodo virtuale PreTranslateMessage e gestisci il tasto invio da lì.
altre info le avrai postando su it.comp.programmare.win32, che qui sei OT ;-)
xaero

Newsgroup: it.comp.lang.c++
Titolo: 1° con funzioni

Salve. Sono al primo programma con funzioni e vorrei una mano a capire dove
sbaglio.
Questo č( o dovrebbe essere) un programma che trova le radici di un
equazione:
#include <iostream.h>
#include <stdlib.h>
float CalEq (float & a, float & b, float & c, float Delta= (b*b)-(4*a*c))
  { if (Delta > 0) {
                     float x1 = (-b - Delta)/(2*a), x2 = (-b + Delta)/(2*a);
                     cout<<"\nLe radici dell'equazione sono:  "<<"x1=
"<<x1<<"  x2= "<<x2<<"\n";
                   }
      else if ( Delta == 0) {
                              float x = (-b)/(2*a);
                              cout<<"\nL'unica soluzione doppia č:  "<<"x=
"<<x<<"\n";
                            }
               else  {
                        cout<<"\nNon ci sono soluzioni reali"<<"\n";
                     }
int main()
{
  float A,B,C;
  cout<<"\nInserire il coefficiente della x:  ";
  cin>>A;cout<<"\n";
  cout<<"\nInserire il coefficiente della y:  ";
  cin>>B;cout<<"\n";
  cout<<"\nInserire il termine noto:  ";
  cin>>C;
  CalEq(A,B,C)
      system("PAUSE");
}
Mi dite dove sbaglio?
Grazie

  snip
Ciao Aepock,
modifico cosi' il tuo programma:
#include <iostream>
#include <stdlib.h>
using namespace std;
void CalEq (float a, float b, float c)
{
    float Delta= (b*b)-(4*a*c);
    // attenzione controllare la a senno' il programma fa crash!
    if (a == 0.0)
   {
       cout << "\nEssendo a = 0, l'equazione e' di primo grado : \n";
       cout << b << "y" << "+" << c << " = 0" << "\n";
    }
    else
     if (Delta > 0)
    {
        float x1 = (-b - Delta)/(2*a), x2 = (-b + Delta)/(2*a);
        cout << "\nLe radici dell'equazione sono:  " << "x1=" << x1 << "
x2= " << x2 << "\n";
    }
    else
    if ( Delta == 0)
    {
        float x = (-b)/(2*a);
        cout << "\nL'unica soluzione doppia è:  " << "x=" << x << "\n";
    }
    else
        cout << "\nNon ci sono soluzioni reali" << "\n";
}
int main()
{
    float A,B,C;
    cout<<"\nInserire il coefficiente della x:  ";
    cin>>A;
    cout<<"\n";
    cout<<"\nInserire il coefficiente della y:  ";
    cin>>B;cout<<"\n";
    cout<<"\nInserire il termine noto:  ";
    cin>>C;
    CalEq(A,B,C);
    system ("PAUSE");
    // L' ottimo Cuni mi suggerisce la soluzione standard e portatile
    // #include <limits>
    // cin.ignore(numeric_limits<streamsize>.max(), '\n' );
    // cin.get();
    // ma su DevC++ 4.01 non posso fare l'include di <limits>
    // ma solo di <limits.h>
 return 0;
}
Maurus
Newsgroup: it.comp.lang.c++
Titolo: Flags

Ciao, qualcuno mi sa dire come implementare i Flags (tipo quelli di
MessageBox) utilizzando però COM? Sto realizzando una libreria per un
mio amico che sviluppa in VB e ne ho bisogno per non dover ricorrere a
450 valori booleani (e non mi rispondete "Non lo so, usa un array di
booleani!).
Rick
scozz...@iol.it
http://users.iol.it/scozzoalto

booleani!).
Penso che quel che ti serve siano le enum del linguaggio IDL,
che si traducono d'altronde appunto in enumerazioni sia in
C/C++, sia in Visual Basic.
Alex

Newsgroup: it.comp.lang.c++
Titolo: Array di record allocato dinamicamente

Salve a tutti!!!
Ho il seguente problema:
Se alloco n nuovi elementi di un array di Record, i vecchi elementi già 
inseriti vengono cancellati (o meglo vengono annullati: i campi stringhe 
vengono assegnati a '\0' e i campi numerici a 0).
Esiste una soluzione al problema che NON sia la creazione di un array di 
backup???

 vengono assegnati a '\0' e i campi numerici a 0).
Per quanto ne so io per aggiungere elementi ad un array devi riallocarlo e
facendo così gli viene associato un nuovo indirizzo i cui elementi
contengono valori "casuali", non zero. Quindi per aumentare il numero di
elementi ti conviene usare un array temporaneo  in cui salvare i vecchi
elementi e crearne un altro ecc...
Forse è possibile se dichiari il vettore per esempio così:
int* array;
Però non credo sia una soluzione ottimale, anzi non lo è.
Non sono un esperto quindi non insultatemi se ho detto castronerie.
CIAO

Se ti va, puoi crearti una copia dell'array con lunghezza uguale a quello
vecchio + gli elementi da aggiungere, e poi appiccicare il tutto lě dentro

 backup???
Certo. Ti basta usare
std::vector<tuo_record> nome_vettore;
e poi riallocare con:
nome_vettore.reserve(numero_spazi);
o, in alternativa, usare
nome_vettore.push_back(nuovo_record);
per aggiungere un nuovo Record in fondo al vettore e
contemporaneamente allungare il vettore di uno.
--
Gerolamo
Newsgroup: it.comp.lang.c++
Titolo: Si puó fare?

Salve,
vorrei sapere se posso creare dei file .pdf con BCB6,
o se mi serve un programma esterno.
Grazie

 o se mi serve un programma esterno.
No, nativamente non si può fare. Ti serve un programma o
meglio ancora un driver esterno.
==========================
Stefano Frosio
http://www.esse-effe.com
==========================

Newsgroup: it.comp.lang.c++
Titolo: domanda

Ciao a tutto il Ng
che significato ha il simbolo << in un istruzione del tipo:
 cout << nc
Ciao a tutti 
Lukesw	

  cout << nc
Quando l'operatore << e' applicato ad un output stream, la sua azione
consiste nello scrivere sullo stream il "valore" di nc.
Si suppone che se nc e' un UDT (ad esempio, se e' un'istanza di una
classe C definita dall'utente) sia stato definito in modo opportuno un
ostream & operator << (ostream &, const C &).
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.

Newsgroup: it.comp.lang.c++
Titolo: Stroustrup 3a ed. aiuto sul Cap.6 Calcolatrice da tavolo

 Max
x Max :
onde evitare future domande banali da parte mia,
c'č una specie di glossario online da cui stai citando la definizione di T.U. ?

 
Il frammento che ho riportato è preso dallo Standard. In realtà, non l'ho
preso dallo Standard vero e proprio, ma dall'ultimo (o uno degli ultimi)  
draft (stesura non definitiva).
Il documento dello Standard non è liberamente consultabile, ma può essere
acquistato presso l'ANSI per 18 dollari. I draft sono disponibili online,
ma, per ovvie ragioni, non hanno alcuna validità e possono differire dallo
Standard in molti punti.
Di glossari (così come di tutorial e FAQ varie) se ne possono trovare
diversi online. Basta cercare un pochino:
 
http://www.google.com/search?q=c%2B%2B%20glossary
 
Qui, ad esempio, c'è il glossario di Bjarne Stroustrup:
 
http://www.research.att.com/~bs/glossary.html
Max
Newsgroup: it.comp.lang.c++
Titolo: Database...

So che sono palloso, ma starei cercando qualche database che si integri per
bene col c/c++. Devo fare un programmino per vedere se riesco a ordinare i
dati secondo più campi e in ordine alfabetico.
Se l'access o il Fox pro possono essere utili fatemelo sapere...
Uso il visual c++ 5.0 e sto per iniziare a lavorare con mfc.
--
San Vegeta from Hell
http://www.geocities.com/Area51/Dungeon/8436
http://come.to/Fantasy.it

Se l'access o il Fox pro possono essere utili fatemelo sapere...
Il linguaggio C/C++ non offre alcun costrutto o facility per la gestione
dei database.
Dato un formato di memorizzazione dei dati e'o di manipolazione degli
stessi, esistono varie librerie per manipolare, tanto per fare un esempio,
le tabelle in formato DBF.
Per liberare i programmatori dalla necessita' di utilizzare librerie ad hoc
per la gestione di formati di dati differenti, Microsoft assieme ad altri
produttori ha deciso di sviluppare un middleware, scomponendo il problema.
Con la "tecnologia" ODBC, ogni base di dati ha un suo driver, solitamente
fornito dal produttore proprietario del formato di memorizzazione.
Tale driver, pur essendo completamente libero per quanto riguarda la
propria implmentazione interna, offre una serie di funzioni standard
per la manipolazione dei dati e della base di dati.
Per accedere ad una base di dati via ODBC, tipicamente occorre avere
delle "tabelle", creare un DSN (Data Source Name) programmaticamente,
oppure con il Pannello di Controllo, quindi da programma connettersi
alla base di dati, ottenendo dei "recordset" con i relativi "cursori"
mediante statement in linguaggio SQL.
[Il discorso e' volutamente generico ed impreciso]
La "tecnologia" ODBC si basa su una serie di API in stile linguaggio C.
Se si utilizza il motore di database JET (quello di Microsoft Access),
sono allora disponibili una serie di classi, che vanno sotto il nome
di DAO.
[Il discorso e' volutamente generico ed impreciso]
Con l'avvento della COM-izzazione del sistema operativo, e' stato
introdotto un ulteriore livello sopra ODBC, con la creazione degli
OLE DB Provider (che pero' possono anche andare ad interagire direttamente
con la base di dati (dettagli di implementazione, per il momento)).
Sopra agli OLE DB Providers, e' disponibile la famiglia di interfacce
COM che vanno sotto il nome di ADO. Le interfacce COM di ADO sono anche
compatibili con l'automazione, e quindi possono essere utilizzate anche
nei linguaggi di scripting, come Javascript e VBScript.
[Il discorso e' volutamente generico ed impreciso]
Il precedente e', a grandi linee, il quadro dei possibili modi di
"accedere" ad un database utilizzando gli strumenti che si trovano
nel VisualC++ 5.0.
Il C++Builder ha anche il BDE e un pletora di Data-Aware components,
ma non mi spingo oltre, per non incappare in omissioni ed imprecisioni.
Newsgroup: it.comp.lang.c++
Titolo: Urgente... Vi prego Help Me

Cerco un sorgente che avvii in automatico un programma ( la calcolatrice x
esempio ) appena ci si connette ad internet! Vi prego per me č urgentissimo
:(( Grazie

Fammi capire, vorresti avviare un .exe quando ti connetti ad internet?
Ma in windows questa cosa non esiste già?
Esiste il modo di avviare una procedura automaticamente nelle impostazioni
della connessione...
oppure potresti usare i socket e usare una funzione di libreria che ti
rileva l'apertura di connessione... se ne è parlato proprio in questo news.

Puoi provare anche utilizzando
#include <cstdlib>
system("TUO_PROGRAMMA_DA_AVVIARE");
agganciando tale messaggio ad una identificazione di avvenuta connessione,
cioč usando una funzione di libreria che intercetta l'avvenuto
collegamento... ora non mi ricordo quale..
prendi perň quello che ti dico con la dovuta cautela... io sono ancora in
fase di apprendimento !
Bye, Sebastiano

Newsgroup: it.comp.lang.c++
Titolo: inline

Sappiamo tutti che la keyword inline e` solo un consiglio dato al 
compilatore: quest'ultimo puo` benissimo decidere di non espandere la 
funzione anche se dichiarata inline.
Ma e` possibile anche il contrario? Ovvero, e` possibile che il 
compilatore espanda inline una funzione non dichiarata come tale?
Avevo sempre pensato di si ma recentemente, dopo un dibattito su una ml, 
sono andato a controllare sullo standard e non ho trovato alcun accenno 
alla faccenda.
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

 alla faccenda.
Il compilatore puo' fare tutto quello che gli pare, purche' il
comportamento osservabile del programma sia uguale a quello specificato
dall'interpretazione letterale dello standard.
Ciao,
Nicola

 Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it
Ma sei lo stesso Antonio Cuni di 
cpp.programmazione.it
, allora.
Hai solo 19 anni?!?!
Ma quando hai imparato a programmare, all'asilo?
Comunque bel sito quello lě...........

alla faccenda.
In questo caso dubito che vi siano vincoli legati allo standard. I
compilatori sono liberissimi di eseguire tutte le ottimizzazioni che
ritengono necessarie, e quindi di espandere inline anche se non viene
richiesto per aumentare le performance.
E' probabile che in futuro, quando i compilatori saranno divenuti pių
intelligenti di ora, sapranno giā da soli quali sono le funzioni che
conviene espandere e quali no, e la keyword 'inline' potrebbe
diventare inutile come la 'register' adesso.
Il Ghenio
---------
// TODO: Place your ass here

 Comunque bel sito quello lě...........
ti ringrazio, ma non e` solo opera mia (anzi!)
ciao Anto
-- 


 In questo caso dubito che vi siano vincoli legati allo standard. 
era proprio quello che volevo sapere,
grazie a tutti quelli che mi hanno risposto,
ciao anto

Newsgroup: it.comp.lang.c++
Titolo: problema con GNU C++

Il mio problema è lo strano comportamento della funzione argv() dello
GNU C++. Il problema è che chiamando il programma con l'argomento *.*
ad esempio, la funzione argv() ritorna i nomi di tutti i file contenuti
nella directory corrente. Non è un comportamento poco ANSI? Come elimi-
narlo? 
GRAZIE.

Daniele Pallastrelli wrote:

Se capisco bene ti stai riferendo alla VARIABILE argv[] (non mi risulta
che esista una funzione argv()). In tal caso dipende dal sistema
operativo, non dal compilatore. Mentre sotto DOS l'argomento *.* viene
passato cosi' com'e' al programma, sotto UNIX, ad esempio, il sistema
operativo sostituisce a *.* l'elenco di tutti i files che poi vengono
passati al programma, se non vuoi che questo succeda devi scrivere "*.*"
(tra virgolette).

 narlo?
Se lo usi sotto sistemi UNIX e' la shell che trasforma *.* nella lista
dei files, prima di lanciare il tuo programma.
Se lo usi sotto DOS/WIN non so.
 
-- 
Andrea Vettori
------------------------
vet...@computer.org
http://www.dei.unipd.it/~vettori
    (italiano)
http://www.geocities.com/ResearchTriangle/9236
   (english)

 (tra virgolette).
oltre alle virgolette (singole o doppie) esistono altri metodi per DJGPP.
sono tutti descritti nella faq sezione 16 del compilatore.
comunque per fare quello che cerchi devi definire una funzione 
__crt0_glob_funcion che ritorni NULL, vedi faq per i dettagli.
---
Ranger, email 
ran...@queen.it
http://members.tripod.com/%7Eranger_rg/

Newsgroup: it.comp.lang.c++
Titolo: [URGENTE] Threads AIUTOOOOOOOOOOOOOOOOO!!!

Ciao a tutti,
dovevo consegnare un progetto 2 giorni fà...
sarebbe un microsimulatore per una connessione wireless...
andava tutto benone, fino a quando mi sono accorto che la syscall vfork() 
non funziona in modalità parallela.
ho bisogno di creare dei threads per simulare il flusso di pacchetti nel 
canale wireless,
è necessario che una volta terminato il processo figlio, il processo padre 
possa giovarsi dei risultati
(è necessario che il processo padre possa sapere se il pacchetto inviato è 
stato ricevuto con o senza errori, oppure se è andato perso)
ho provato con:
     clone( sendPacket, malloc(4096) + 4096, CLONE_VM | CLONE_THREAD, new 
Packet ( buff ) );
ma il compilatore si lamenta della funzione in input ( che a dire il vero è 
un metodo privato),
e del fatto che faccio malloc(4096) + 4096.
Se stolgo la somma , il secondo errore scompare ( ma gli stack non vanno 
dall'alto in basso? ), ma il primo problema come lo risolvo?
Ho poi a fare fork(), e poi (ad esempio)
     #define ACK_MSG 1001
...
     kill ( getppid(),  ACK_MSG );
dal processo figlio, ma poi se faccio
    wait ( ACK_MSG );
il compilatore si lamenta di ACK_MSG  ( me lo immaginavo! )
come avrei potuto fare?
AIUTOOOOOOOOOO!!!
DanZz
--------------------------------------
http://gnaskuru.altervista.org
the 
Gn.AS.ku.RU
. project HOME
-------------------------------------- 

 ho bisogno di creare dei threads 
  man pthread_create
 
 
http://www.google.it/search?q=posix+threads+tutorial
Max
Newsgroup: it.comp.lang.c++
Titolo: [OT]Ricavare la data

ciao a tutti,
mi scuso per l'OT e vi chiedo se esiste una funzione (***PORTABILE***) per
ricavare il tempo( data ora min....)
grazie in anticipo!
--
Alessandro >>CoMiX<< Cominu
e-mail: 
aco...@tiscalinet.it
Icq: 116354077
Registered user at 
http://counter.li.org
 # 203765

 --
Non ti posso assicurare nè la portabilità nè l'esatezza dato che in questo
momento sono
impossibilitato a controllare ma esiste un getdate o qualcosa di simile in
dos.h
scusa per l'incompetenza ma spero di esserti stato utile cmq.
ciao

 ciao
Scusa ma non mi pare ci sia molto da controllare sulla portabilità di una
funzione dichiarata in un header che si chiama "dos.h".
--
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

funzione dichiarata in un header che si chiama "dos.h".
Ma dos sta per Disk Operating System... se fosse stato msdos.h allora
si... 8-PPP
Luc.

 grazie in anticipo!
prego

grazie in anticipo!
Tale sistema restituisce la data attuale, e dovrebbe essere portabile.
#include <ctime>
#include <iostream>
int main()
    {
   std::time_t p= std::time(0);
   std::tm *adesso=std::localtime(&p);
   char buf[15];
   strftime(buf, 15, "%d/%m/%y", adesso);
   std::cout << buf<<std::endl;
   return 0;
    }
Il Ghenio
-----
ZIO : Fun and games are over with. Anyone who dares
get in my way shall perish.
DIO ci salvi dagli ocx del Viral Basic.
-----

Thanx
Newsgroup: it.comp.lang.c++
Titolo: Cbuilder ,disegnare con Canvas su TabSheet

Ciao,mi viene comodo usare un Canvas per fare griglie ridimensionabili e
tracciare un grafico partendo da un array ecc
Fino ad ora senza specificare niente in particolare il Canvas disegnava sul
Form.
Ho dovuto aggiungere due TabSheet in un oggetto TPage e vorrei disegnare su
uno di queste due Tab
Non riesco a trovare indicazioni su come imporre che il disegno venga fatto
sulla TabSheet in questione.
Qualcuno vorrebbe molto gentilmente indicarmi come si fa,fornirmi qualcche
link o affini?
Grazie

 sulla TabSheet in questione.
Da quello che ricordo ogni tab ha il suo proprio canvas su cui disegnare.

 sulla TabSheet in questione.
Secondo me la soluzione piu' semplice e' aggiungere un TPaintBox e
gestire
l'evento OnPaint usando il canvas del paintbox per disegnare.
ciao
Giacomo

 ha scritto nel
messaggio
news:e761615f-9ac4-4388...@l31g2000vbp.googlegroups.com...

Grazie per i suggerimenti ragazzi

Newsgroup: it.comp.lang.c++
Titolo: Fondamenti di programmazione

Ciao, prova con "C++ fondamenti di programmazione" della Deitel & Deitel
distribuito da Apogeo. Anche se c'è un errore in un es. sulla struttura di
selezione switch a me va bene :-)
    francesco
uin= 76746687

 ha scritto nel messaggio
news:qDTQ6.6995$%S4.6...@news1.tin.it...


Newsgroup: it.comp.lang.c++
Titolo: Il più facile programma C++ Builder che non gira.

Salve a tutti.
Ho fatto un programma in C++ Builder che visualizza una finestra con una
scritta  "Ciao da Cristiano!"  e nient'altro.
E' il primo esempio di programma che c'č nel libro su cui sto studiando.
A me funzione a meraviglia, perň ho spedito via posta elettronica il file
cristiano.exe ad un mio amico e a lui non funziona.
Sapete dirmi perchč?
Grazie
Cristiano

Predator wrote:

Il motivo č che per eseguire il file necessitano delle dll a meno che fai il
linking statico.
E' un argomento che troverai sviluppato piů avanti nel libro che stai
leggendo.

 Sapete dirmi perchč?
 
DLL mancanti suppongo...
Alex


Lo immaginavo... ma gli autori non potevano dirlo subito, cosě noi poveri
principianti non ci facevamo questi problemi?
Newsgroup: it.comp.lang.c++
Titolo: Domanda sui vector

Inanzi tutto ciao a tutti. Volevo una conferma sul fatto che i container 
  forniti con le STL non sono thread safe (di conseguenza l'accesso da 
parte di + thread me lo devo gestire io a manina con i semafori).
Vi ringrazio e vi saluto ancora
ciao
Pier Paolo


Sì, anche se è possibile trovare implementazioni della libreria standard 
che garantiscono l'accesso thread-safe ai suoi elementi.
-- 
"E' solo dopo aver perso tutto che siamo liberi di fare qualsiasi cosa."
"buuuhhhhhhhhhhrrrrrrr"

 parte di + thread me lo devo gestire io a manina con i semafori).
Dal punto di vista della standard non c'e' alcuna garanzia, perche' li'
i thread non sono considerati. Generalmente i fornitori garantiscono
che le parti a te inaccessibili della libreria si comportano
correttamente (ad es. la gestione della memoria), ma l'interfaccia
pubblica devi gestirtela tu.
Ciao,
Nicola

 
IMHO potresti usare un solo file per le dichiarazioni e due file 
distinti con le implementazioni, uno per windows e l'altro per *nix. Poi 
gestisci il tutto in fase di compilazione. i.e.: compili 
class_pthread.cpp quando sei su *nix, compili class_win32.cpp quando sei 
su Windows.


pbruno ha scritto:
A questo punto una domanda stilistica ...
io ho creato una classe che contiene una std::queue , ho dichiarato i 
metodi push e pop per gestire l'accesso sincronizzato su un mutex 
(ovviamente ho anche fornito il metodo size ed empty che mi 
interessavano ma questi ultimi nn li ho sincronizzati.
Un'altra strada poteva essere sfruttare l'ereditarietà e quindi creare 
una classe derivata della queue e su questa wrappare le operazioni di 
push e pop sincronizzandole tramite mutex. Quale  vi sembra la scelta 
migliore ? io ho usato la prima solo perchè mi sembrava + semplice.

 migliore ? io ho usato la prima solo perchè mi sembrava + semplice.
imho, meglio il contenimento come hai fatto tu. Le classi standard non 
sono pensate per essere specializzate.


 (sto cercando di imparare ed i suggerimenti altrui sono sempre validi :) )
Per imparare va benissimo documentarsi e reinventare la ruota, altrimenti
ZThread é una risposta migliore alle tue esigenze.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
        **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
 [cowo@braveheart cowo]$ make sex
    make: *** No rule to make target 'sex'.  Stop.
Newsgroup: it.comp.lang.c++
Titolo: Libri

A proposito di libri.
Una pubblicazione prossima ventura per chi e' interessato al C++ (occhio: non
sono affatto testi facili) e' quella che trovate a 150$ a questa pagina (occhio
che la url verrà certamente spezzata e dovete ricostruirla):
http://www.amazon.com/exec/obidos/ASIN/0201775816/qid=1001690366/sr=1-5/ref=sr_1
_3_5/103-8695966-8626254
Io dico di tenerla presente per la classica domanda: cosa vuoi per natale?
--
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

Io dico di tenerla presente per la classica domanda: cosa vuoi per natale?
Mi sembra che in quanto ad autori quel libro sia firmato dal Gotha del
C++ ^_^ 
--
Rhymes - 
rhy...@myself.com
http://www.foxhound-games.it
"Sapete cosa fa un InputStream quando
gli si racconta una barzelletta? Reader..."

 C++ ^_^
Infatti. E sono contento di aver aspettato a comperarmi quei testi cosi' mo me
li piglio tutti in un colpo solo (nota: non e' un libro, e' un cofanetto con i
migliori libri sul C++).

Newsgroup: it.comp.lang.c++
Titolo: Aiuto su Borland C++ 3.0

Scusatemi, vi prego di non chiamarmi idiota (!), ma ho un problema: ho
trovato il Borland TurboC++ 3.0 in un vecchio CD che avevo, ma i file sono
tutti sfusi, non ci sono sottodirectory, e non credo proprio sia normale!
Non dovrebbero esserci directory chiamate LIBS, INCLUDE, BGI, etc? Quali
sono i file da mettere nelle rispettive sottodirectory?
Se potete aiutarmi, vi ringrazio sin d'ora. la mia e-mail č
rain...@libero.it
Grazie, ciao!

 sono i file da mettere nelle rispettive sottodirectory?
	Và a un newsgroup con soggetto di Borland. Questo è un newsgroup
per parlare di C++ in generale.
	I apologize to all the Italians I've offended with my grasp of the
language.
 
-- 
Sean McFee
Ground and Sky (webmaster: Brandon Wu): 
http://www.progreviews.com
 
The Progressive Rock Used CD Shop: 
www.nexus.carleton.ca/~sean/prog/shop

 wrote in message
8e23en$ebs$1...@bertrand.ccs.carleton.ca...


See ya
Abbi pazienza, ma nei newsgroups italiani č pieno
di cinghiali. Mi vergogno io per lui. Certo che nei newsgroup
di borland trovi sicuramente gente piů educata. Come
al solito ci dobbiamo sempre fare riconoscere.
Ciao!

Beh, forse Sean e' stato un po' brutale, pero' lui stesso dice di non
sapere bene l'italiano e soprattutto ha perfettamente ragione.
Purtroppo, evidentemente, chi come me cercava di mantenere il newsgroup
entro l'ambito che lo compete, dirottando i messaggi fuori argomento
verso gruppi piu' specifici si e' stufato di farlo, e cosi' siamo pieni
di messaggi tipo "ho Piripicchio C++ come faccio...", "La parallela
questa sconosciuta...", ecc.
Ciao,
Nicola



Ok, ammetto che mi era sfuggito che si trattasse di una
persona che non è di madre lingua. (del resto anch'io
sono un extra anche se sono di madrelingua). Non so
come ho fatto a non vedere le due righe sotto. Mah?
Forse era l'orario.
Comunque, scusando la sua brutalità e - spero - la mia
distrazione notturna, bisogna ammettere che, a parte
qualche tedesco a caso che frequentava i newsgroup
borland e che anche tu mi risulta dovresti conoscere,
molte volte nei forums italiani scrive gente che, quando
va bene, è un po' troppo immodesta (e non sto parlando
solo dei gruppi di discussione sulla programmazione).
Quando va male si tratta di gente che pensa che al
di la della loro tastiera ci siano persone che possono
essere prese beatamente a pesciate in faccia.  Colpa
magari della loro preparazione "inferiore", ok, però pur
sempre persone che non meritano di essere trattate come 
talvolta vengono trattate. Delle volte mi sembra di vedere
lo stesso comportamento violento che certe persone hanno 
verso i propri familiari quando tornano a casa incavolati neri
dal lavoro (molte volte perché è quello che si meritano).
Rimanendo nell'ambito dei gruppi di programmazione
(o tecnici in genere) iltaliani, direi che forse non sono in
assoluto i peggiori. Solo che - come al solito - c'è sempre
qualcuno che in fatto di stile (comportamentale) ci surclassa
e questo, mi dispiace dirlo, è quasi una costante.
Scusate l'OT ma non potevo non scusarmi e replicare
di conseguenza.
Ciao.
Giuliano
Newsgroup: it.comp.lang.c++
Titolo: gestione suoni e immagini

Ciao,
avrei bisogno di gestire suoni, immagini e filmati
tramite un programma Visual C++ (versione 5.0 con MFC)
Volevo sapere innanzitutto se e' possibile;
se si' come, oppure se c'e' qualcuno che sa dirmi dove posso
trovare della documentazione su questi argomenti ?
Grazie
	Andrea

Ci sono diverse strade, una e' usando le DirectX, che pero' sono
abbastanza difficili da imparare. Un altro modo e' usando per i suoni le
MCI (quarda nell'help), per le immagini puoi usare le bitmap e l'API
LoadImage(...), mentre per i filmati ci sono anche altre API (non mi
ricordo quali).
Per la documentazione quarda nell'help del Visual C++, troverai tutto
quello che ti serve.

Newsgroup: it.comp.lang.c++
Titolo: string <-> int

L'altro giorno ho provato ad eseguire le seguenti operazioni :
string s = 10;
int i = s.ToInt();
(di solito utilizzo gli AnsiString  del Builder O:) )
e il compilatore si e' arrabbiato. Se non ho capito male, sembra che non
ci sia un costruttore che trasforma un intero in un oggetto string e non
esista una funzione membro che trasforma uno string in un intero
Come posso fare ?
Non desidero utilizzare i vettori di caratteri del C
Ciao
---------------------------------------
Email: cambia "nospam" con "infinito"

 Come posso fare ?
Puoi usare std::ostringstream e std::istringstream (o i vecchi 
ostrstream e istrstream, se il tuo compilatore non č recente)
Esempio:
#include <sstream>
#include <string>
#include <iostream>
using namespace std;
int main()
{
     ostringstream oss;
     // Spara l'intero 10 sullo stream.
     oss << 10;
     // Costruisce mystring con il contenuto di oss
     string mystring(oss.str());
     cout << "Convertito in string: " << mystring << endl;
     // Costruisce e inizializza iss con il contenuto di oss
     istringstream iss(oss.str());
     // Estrae un intero dallo stream
     int val;
     iss >> val;
     cout << "Riconvertito in int: " << val << endl;
     return 0;
}
-- 
  |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
  |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
_|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it

 Come posso fare ?
http://groups.google.com/groups?as_ugroup=it.comp.lang.c%2b%2b&as_usubject=string%20int

Ciao,
io ho scritto queste 2 funzioni che fanno quello che ti serve, ma devi usare
le stringhe della classe string. Non conosco il Builder ne tanto meno le
AnsiString quindi non so se il passaggio AnsiString -> std::string sia
semplice. In ogni caso ecco il sorgente:
#include <string>
using namespace std;
// Converte un'intero in una stringa
string IntToStr (int num) {
 if (num == 0)
  return "0";
 int diff = 0, n = 0;
 char segno = ' ';
 string tot = "";
 if (num < 0) {
  segno = '-';
  num = -num;
 };
 n = num;
 while (n > 0) {
  n = num / 10;
  diff = num - n * 10;
  tot = char(diff + 48) + tot;
  num = n;
 };
 return (segno == '-' ) ? '-' + tot : tot;
};
// Converte una stringa in un'intero
int StrToInt (string s) {
int tot = 0, x = 1, segno = 1;
        if (s[0] == '-') {
  s = s.substr(1);
  segno = -1;
 };
 const char* ch = s.c_str();
        for (int i = 0; i < s.size(); i++) {
                tot += (ch[s.size() - i - 1] - 48) * x;
                x *= 10;
        };
        return tot * segno;
};
Ciao
--
Artwork
Newsgroup: it.comp.lang.c++
Titolo: Stringhe in C++

Esistono in C++ funzioni che consentono di leggere valori numerici
separati da spazi
com in basic?
Grazie!


Si, il classico operator >> come in
int n;
cin >> n;
EMG

Grazie!
Ma certo!!! Prova con 
string buf;
getline( cin , buf);
Evita invece di usare  cin<<buf  , che legge una frase dalla tastiera
solo fino al primo spazio. Bye!!!
-------             --------
J  I  G  G  L  Y  P  U  F  F .
-------             --------

 solo fino al primo spazio.
E non era quello che si voleva ottenere?
EMG

E non era quello che si voleva ottenere?
Utilizzare 'cin>>buf' per ottenere una serie di numeri separati dallo
spazio penso che sia un sistema poco affidabile, anche se piů rapido
di quello che ho esposto io. Se l'utente che immette la riga compie
anche un solo errore(ad esempio mette uno spazio in piů oppure
inserisce un carattere alfanumerico) il programma sbaglia
clamorosamente.
Se l'autore del post avesse scritto "leggere un valore numerico dalla
tastiera" la soluzione sarebbe stata quella di usare cin, ma in questo
caso credo che sia meglio leggere un'intera riga per poi lavorarci
sopra(cosi' si possono anche correggere eventuali errori commessi
dall' utente senza correre il rischio di fare casino).


 clamorosamente.
Beh, comunque non si potrebbe fare altro che segnalare l'errore.
L'alternativa č di leggere (o interpretare una volta letta l'intera
riga) un carattere alla volta. Non molto comodo.
EMG

riga) un carattere alla volta. Non molto comodo.
La soluzione migliore secondo me é leggere un'intera riga e poi creare
una routine che elimina ogni eventuale carattere alfabetico dalla
stringa e che poi separa da essa gli interi. Ovviamente questo fa
aumentare la lunghezza del listato ma lo rende molto più affidabile.
Il Ghenio
-----
James: Adesso so finalmente cosa provano i panni messi in lavatrice!
Jesse: Avremo bisogno di un candeggio!!
(Team Rocket)
-----

 aumentare la lunghezza del listato ma lo rende molto più affidabile.
Per quello che ho detto sopra non sarebbe affatto più affidabile in
quanto non riuscirebbe comunque a distinguere quei due tipi di errori.
EMG
Newsgroup: it.comp.lang.c++
Titolo: Cerco Tutorial...

Salve, io sono nuovo del newsgroup.
Scusate se vi rubo 1 minuto ma mi servirebbe un aiutino.
Io mi sto avvicinando al C++ e siccome ho gran voglia di imparare volevo
sapere da qualcuno di voi se mi potreste dire dove scaricare un ottimo
tutorial, magari in italiano, che mi insegni tutto quello che una persona
alle primissime armi dovrebbe sapere.
Grazie in anticipo a coloro che mi aiuteranno, ciao !! :D
GdJ.

Leggiti le faq su 
www.programmazione.it
 vi troverai numerossissime
e utilissime indicazioni.
Paolo
Newsgroup: it.comp.lang.c++
Titolo: Costruttori, funzioni const e funzioni virtuali

Mi trovo in una situazione un po' strana: ho una classe che
implementa un calendario, e questo calendario puo' essere di
due tipi, testo o html. Al che ho realizzato una cosa del
genere:
class Calendar {
public:
    virtual void print() = 0;
    virtual void fillDays() = 0;
}
class CalendarText: public Calendar {
public:
    CalendarText();
    void print();
    void fillDays();
protected:
    DayOfCalendar* getDay(int, int, int);
    vector<Day*> vDay;
}
class CalendarHTML: public CalendarText {
public:
    CalendarHTML ();
    void print();
protected:
    DayOfCalendar* getDay(int, int, int);
}
[print richiama fillDays che usa getDay]
A parte qualche parametro in piu' diciamo che la struttura e'
questa. Un calendario praticamente e' un contenitore di giorni,
e ogni giorno e' un contenitore di appuntamenti (tipo agenda),
che vengono letti da un database - i giorni sono polimorfici e
la getDay di CalendarText usa DayOfTextCalendar (derivata da
DayOfCalendar) mentre la CalendarHTML usa DayOfHTMLCalendar
(derivata da DayOfTextCalendar).
Il problema e' che io vorrei far si' che i costruttori inseriscano
gli appuntamenti nei giorni del mese usando una funzione virtuale.
Solo che non si puo' fare perche' i costruttori anche se una funzione
e' virtual usano chiaramente quella nello scope della loro classe.
Al che ho inserito il riempimento dei giorni nella funzione print:
alla chiamata di print vengono creati e riempiti i giorni e
poi viene stampato il calendario. Il fatto e' che in questo modo
print non puo' essere dichiarata const, cosa abbastanza strana
per una funzione di stampa, perche' va effettivamente a modificare
l'oggetto di invocazione, e questo comporta che io non possa
stampare un const Calendar. Non e' che sia un grande problema,
tuttavia vorrei aggiustare le cose. Oltre alla soluzione di non
usare funzioni virtuali (o che richiamano f. virtuali) nei
costruttori, ce ne sarebbe qualche altra?
-- 
Saluti,
 Francesco Cipriani

 costruttori, ce ne sarebbe qualche altra?
Idioma (o pattern) "two-phase constructor".  La classe base
ha una funzione virtuale, ad es virtual void Init() = 0.  La
fabbrica (factory) responsabile della creazione, subito dopo
l'opportuno new, chiama sempre nuovorobo->Init(); questo
permette di inizializzare con tutte le funzioni virtuali che si
vogliono.  L'idioma e` agevolmente iscrivibile in un template
da agganciarsi a tutte le classi factory colla solita PWAN.
Alex