mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: operatori ed ereditarieta

Salve,
ho il seguente problema:
 ho una classe base in cui viene definito l'operatore di assegnazione. Da
questa derivo una seconda classe nella quale ho la necessità di ridefinire
l'operatore di assegnazione. Il nuovo operatore dovrebbe utilizzare il
quello della classe base.
Ho provato qualcosa del genere ma non compila
class prima
{
public:
 int el;
 prima *operator=(prima v)
 {
  el=v.el;
  return this;
 }
};
class seconda : public prima
{
 int el2;
 seconda *operator=(seconda v) prima::operator=(v)
 {
  el2=v.el2;
  return this;
 }
};
qualche idea?
Grazie
Massimo Petrillo

  }
Questo diventa
seconda & operator= (const seconda & v)
{
  prima::operator=(v);
  el2=v.el2;
  return *this;
}
Dopo di che' non faresti male a leggere "Effective C++" di Scott Meyers,
a proposito della definizione dell'operatore di assegnamento in classi
base e classi derivate, e "Exceptional C++" di Herb Sutter a proposito
della corretta gestione delle eccezioni nell'operatore di assegnamento.
Ciao,
Nicola

 della corretta gestione delle eccezioni nell'operatore di assegnamento.
Perche' C++ Primer no ? 
Ciao
Gaetano.
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

commosso per la gentilezza.

 commosso per la gentilezza.
Pensi che io quei libri non li abbia letti ?
Il C++ e' un "animale" e se non lo conosci
ti tira brutti scherzi io dopo quasi 4 anni
continuo ad imparare alcuni aspetti (e non piccoli).


Massimo Petrillo wrote:


Comunque una definizione più coerente di operator = ( ) sarebbe:
class seconda : public prima
 {
  int el2;
  seconda & operator=(const seconda &v) 
  {
   prima::operator=(v);
   el2=v.el2;
   return *this;
  }
 };
 
NB: probabilmente va aggiunto un qualche public;
Newsgroup: it.comp.lang.c++
Titolo: data e ora

Esiste una un metodo per trovare data e ora con il c++?
Uso g++ su linux per compilare
Grazie
-- 
.·" DevarajA "·.
leo...@libero.it
 

 wrote in message
pan.2003.06.10....@libero.it...

Header <ctime> delle librerie standard c++ ereditate dal c, time per avere
la data e l'ora corrente e localtime per corvertirla ad una struttura
utilizzabile:
Tratto dalle msdn
/* LOCALTIM.C: This program uses time to get the current time
 * and then uses localtime to convert this time to a structure
 * representing the local time. The program converts the result
 * from a 24-hour clock to a 12-hour clock and determines the
 * proper extension (AM or PM).
 */
#include <stdio.h>
#include <string.h>
#include <time.h>
void main( void )
{
        struct tm *newtime;
        char am_pm[] = "AM";
        time_t long_time;
        time( &long_time );                /* Get time as long integer. */
        newtime = localtime( &long_time ); /* Convert to local time. */
        if( newtime->tm_hour > 12 )        /* Set up extension. */
                strcpy( am_pm, "PM" );
        if( newtime->tm_hour > 12 )        /* Convert from 24-hour */
                newtime->tm_hour -= 12;    /*   to 12-hour clock.  */
        if( newtime->tm_hour == 0 )        /*Set hour to 12 if midnight. */
                newtime->tm_hour = 12;
        printf( "%.19s %s\n", asctime( newtime ), am_pm );
}
L'esempio č tratto dalle msdn vc++6, ma le funzioni appartengono allo
standard quindi dovrebbe funzionare anche sul g++

Newsgroup: it.comp.lang.c++
Titolo: borland quick report: alternative ?

salve sto sviluppando un programma per le stampe col borland il problema più 
grosso
che il quickreport è pieno zeppo di bug !! un macello e dir poco
mi chiedevo esiste qualche prodotto free da utilizzare per fare stampe 
semplici semplici che si integra col
borland c++ ?
Non chiedo niente di particolare unico requisito che si possa stampare anche 
senza database
(i dati gli metto io )
grazie spero che ci sia qualche anima buona ;.) 

 ha scritto nel messaggio 
news:KlXId.445050$b5.21...@news3.tin.it...

SCUSATE , ho sbagliato news.....

Newsgroup: it.comp.lang.c++
Titolo: [OT] dev c++

chiedo venia
qualcuno sa dirmi se e come si aggiungono le fermate e i watch (come nel
borland) al devc++ ?
grazie 1000. sto impazzendo a debuggare con file di testo

 ha scritto nel messaggio
news:3CC9DD76...@hotmail.com...

L'argomento č OT in questo NG, comunque quello che stai cercando č un
debugger che si integri con Dev-C++. Uno senza infamia e senza lode č
l'insight, che usa il gdb: lo scarichi quě:
http://devcpp.everfloyd.com/packages/bin/insight5_win32.zip
Ciao,
Cecco

 Cecco
  grazie mille ora provo
Newsgroup: it.comp.lang.c++
Titolo: Ricerca binaria ricorsiva.

Salve a tutti.
Sono alle prime armi con la ricorsione, ma anche con il C++ in generale.
Per favore potete controllare questo breve algoritmo e dirmi dove è
sbagliato e magari correggerlo?
********************************************************************
bool BinSearch(const T* Vet, const int Left, const int Right, const T x, int
& pos)   {
   bool found;
    if ( Left > Right )  { found = false; }
    else {
           int med = ( Left+Right )/2;
       if ( x == Vet[med] ) { found = true;
                              pos = Vet[med];
                            }
       else if( x < Vet[med] ) found = BinSearch(Vet,Left,med-1,x,pos);
          else found = BinSearch(Vet,med+1,Right,x,pos);
       }
    }
*********************************************************************
GRAZIE

 GRAZIE
Ciao. Marco.

Newsgroup: it.comp.lang.c++
Titolo: staff@ngi.it

Perche' quando tento di connettermi mi dice che il nume utente e la password
non sono corretti? Eppure sono sempre i soliti.

 ha scritto:
Ops, ho sbagliato destinatario :/

Newsgroup: it.comp.lang.c++
Titolo: UTILIZZO DEI TIMER IN VISUAL C++

Vorrei chiedere quali comandi devo utilizzare per realizzare un
timer che ogni tot minuti salvi il lavoro dell'applicazione che ho
realizzato.
Grazie.
Andrea Giovannoni
E-Mail: 
andr...@tin.it

...


Purtroppo però la funzione SetTimer mi da 4 parametri in ingresso anzichè 3
L'API SetTimer ha 4 parametri (il primo e` l'HWND della
finestra cui si riferisce); la versione a 3 parametri che ti
veniva suggerita` e` probabilmente la funzione-membro
di CWnd, classe di MFC (visto il riferimento a VC++ nel
subject), che fa implicitamente riferimento alla finestra
la cui handle e` la m_hWnd dell'oggetto di classe CWnd
(o classe da essa derivata) su cui la chiami.
Alex
Newsgroup: it.comp.lang.c++
Titolo: ASCII esteso

È possibile usare l'ascii esteso nelle stringhe C++ in maniera 
semplice e portabile?
Ho fatto qualche prova con vari compilatori, e i risultati sono stati 
abbastanza scoraggianti; quando compaiono accenti e altri caratteri 
over-127, tutti gli aspetti della gestione delle stringhe diventano 
problematici: i/o da file, scrittura su std::cout, confronti.
C'è qualcuno che ha già affrontato lo stesso problema e ha qualche 
suggerimento/link sull'argomento? 
-- 
Ciao, Marvin

 ha scritto nel messaggio
news:9ufgl0.3...@marvin.gpp.despammed.com...

Se ho capito bene credo che dovresti provare ad usare i tipi wchar_t e
wstring (header string).
Ciao,
Antonio

 wchar_t e wstring (header string).
Grazie del suggerimento. Sono andato a leggermi un po' di 
documentazione su wchar_t, ma purtroppo non è quello che mi 
servirebbe. wchar_t rappresenta un carattere a 16 o 32 bit, mentre io 
devo analizzare dei file di testo già esistenti, e che quindi sono già 
codificati in normali char a 8 bit; il problema è spiegare al 
compilatore che tipo di codifica usare nel trattare i caratteri 
compresi tra 128 e 255.
Esempio. Se io scrivo:
  std::cout << (unsigned char)(233);
con cygwin ottengo "é", mentre con bcc55 ottengo "ù". Questo dipende 
dal fatto che i caratteri over-127 variano a seconda della codifica 
usata. Quindi la mia domanda è: posso controllare il modo in cui gli 
stream interpretano la tabella ascii?
-- 
Ciao, Marvin

 stream interpretano la tabella ascii?
In questo caso forse ti possono aiutare i locale (header locale), ma non è
che ne sappia poi tanto sull'argomento quindi potrebbe anche essere che ti
sto dicendo una fesseria.
Comunque, un po' di materiale sui locale me lo ha segnalato Manlio Perillo e
lo trovi (in pdf) alla home page dello Stroustrup (appendice D), per sapere
quale specifico locale utilizzare nel tuo caso penso dovresti fare
riferimento alla documentazione del compilatore.
Ciao,
Antonio

 stream interpretano la tabella ascii?
Dimenticavo, il locale puoi impostarlo usando la funzione membro
'imbue(const locale& loc)' disponibile per tutti i canali di I/O.
Ciao,
Antonio
Newsgroup: it.comp.lang.c++
Titolo: domanda niubbi

Ciao a tutti,
ho una domanda sull'include. Se io faccio
#include "prova.hpp"  in un file main che ha una funzione che appartiene 
alla 
libreria x, solo che l'include a quella libreria lo metto proprio nel file 
prova.hpp (quindi solo in prova.hpp c'e' #include <libreriax>), vengono 
dati errori per il fatto che vuole l'include specifico anche nel main , 
oppure compila senza problemi?
Grazie e ciao!

 #include "prova.hpp"
Prova a pensarla cosi`: ogni direttiva #include viene sostituita nel 
file sorgente con il contenuto del file indicato (e se questo contiene a 
loro volta degli #include, pure questi vengono espansi con il contenuto 
dei file indicati), esattamente come se l'avessi scritto a mano tu nel 
codice.
E tutto cio` accade ancor prima che parta il processo di compilazione 
vero e proprio.
Se poi tieni presente che in C++ tutto cio` che viene usato deve prima 
essere dichiarato (anche se non necessariamente definito), il resto 
dovrebbe venire da se`.
-- 
   |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
   |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
  _|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it
Newsgroup: it.comp.lang.c++
Titolo: std::vector e anomalia

Ciao a tutto il NG,
ho un comportamento anomalo in una sezione di codice :
[...]
void MyFunc()
{
   std::vector<int> myVector;
   GetItem(myVector);
   // a questo punto myVector è ok, ci sono dei valori
   // e myVector.size() è quello che mi aspetto.
   // Faccio un paio di controlli ma myVector non viene proprio toccato !
   // A questo punto myVector è vuoto, la sua size è 0.
}
L'ipotesi che ho fatto è che siccome questa è un'applicazione multi thread
si scornano a vicenda ......e si fanno casini. Oppure c'è qualche cosa
che mi sfugge ?
Grazie a tutti.
_ _
Dato che non penseremo mai nello stesso modo e vedremo
la verità per frammenti e da diversi punti di vista,
la regola della nostra condotta è la tolleranza reciproca.
La coscienza non è la stessa per tutti. Quindi, mentre
essa rappresenta una buona guida per la condotta individuale,
I'imposizione di questa condotta a tutti sarebbe
un'insopportaibile interferenza nella libertà di coscienza di
ognuno (Gandhi). 

 
C'è un baco alla riga 42.
M


wrote:

....colonna 42
Newsgroup: it.comp.lang.c++
Titolo: Accesso classe Base da classe Derivata

Salve a tutti, ho un problema in teoria banale ma non riesco a
risolverlo: :-(
Devo far riferimento alla classe Base all'interno di una Derivata,
qualcosa tipo:
class B {... };
class D: public virtual B {...};
void D::f () {
   B oggetto = (this -> B);  // ? dice "invalid use of struct B"...
   B oggetto = B:: ;             // dice "expectex unqualified id ..."
};
Qual'è la sintassi giusta? Grazie!

 Qual'è la sintassi giusta? Grazie!
:-) Scusate, come non detto: in effetti era banale:
B oggetto = *this;

Newsgroup: it.comp.lang.c++
Titolo: Intercettare alt+f4

Ciao a tutti,
  volevo sapere come è possibile intercettare e disabilitare l'uscita di un
programma con la combinazione alt+f4 utilizzando Borland c++ builder 3.
    Saluti Fausto

programma con la combinazione alt+f4 utilizzando Borland c++ builder 3.
Devi scrivere il codice per l'evento OnClose e/o OnCloseQuery del form
principale della tua applicazione.
Ciao.
--
Stefano Tempesta
PC Service Software
http://www.tempesta.org
in...@tempesta.org

Newsgroup: it.comp.lang.c++
Titolo: asm e emit in VC++ 5.0

Sto portando in Microsoft Visual C++ 5.0  dei programmi
scritti in origine per il Borland C++.
A quanto sembra il VC non riconosce le keyword asm
e emit e cio' mi sembra strano. Vorrei sapere se c'e'
un modo per farle riconoscere.
Grazie in anticipo.
Saluti
Luigi

un modo per farle riconoscere.
per la emit non lo so, comunque la asm deve essere preceduta da due
caratteri di sottolineato: __asm
Gianpaolo Bottin
- The truth is out there -

caratteri di sottolineato: __asm
se hai ad esempio emit(0x0F,0x0C) la trasformi in __asm DB 0Fh, 0Ch
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343

 se hai ad esempio emit(0x0F,0x0C) la trasformi in __asm DB 0Fh, 0Ch
Ringrazio delle risposte. Con __asm adesso l'assembler funziona.
Pero' mi sembra di aver provato __asm db 0x90; e non funzionava.
Riprovero' in mauiscolo e con 90h.
Cordiali saluti.
Luigi

Newsgroup: it.comp.lang.c++
Titolo: telnet e console

Buonasera
    mi serve un aiutino per scrivere un mio server telnet. Qunado pensavo a
come costruirlo avevo in mente di passare i comandi arrivati dal socket alla
console, catturare l'output e rispedirlo giů tramite il socket. Solo che non
so come fare e tutti gli esempi che ho visto in giro per la rete adottano un
sistema differente, cioč riconoscono il singolo comando e lo gestiscono.
Avete qualche idea??
Grazie
Domenico Briganti

 wrote in message
news:avd05b$edjf8$1...@ID-102000.news.dfncis.de...

...Posso scrivere che Domenico e' OT o qualcuno si offende?
A parte gli scherzi Domenico, questo newsgroup parla di problemi inerenti il
linguaggio C++ standard, per cui concetti come server, telnet, socket, sono
estranei.
Dovresti indirizzarti verso un newsgroup appropriato e specializzato per
l'argomento in questione.
Io non so nemmeno quale sia un newsgroup che possa interessarti.
Maurus
Newsgroup: it.comp.lang.c++
Titolo: mysql

E' possibile usare mysql con il c++? Se si come, parlatemene come se fossi
un bambino, grazie.
Un'altra cosa non riesco a capire come funziona la funzione strlen.

 Un'altra cosa non riesco a capire come funziona la funzione strlen.
Siamo proprio messi male allora. Ti suggerisco un lungo cammino di 
apprendimento prima di arrivare ai database... 
-- 
Luc.

 Un'altra cosa non riesco a capire come funziona la funzione strlen.
??? Stai scherzando ???
Comunque, restituisce il numero di caratteri che compongono la stringa
passata per argomento... più semplice di così ;-)
Ciao

 Un'altra cosa non riesco a capire come funziona la funzione strlen.
Beh, cercalo in un manuale di C/C++ o su internet.
Tommy

Newsgroup: it.comp.lang.c++
Titolo: const void f() ??

Sapreste dirmi il significato di questo codice?
#include <iostream>
class A {
      public :
             const void f() {} // che vuol dire const void i questo caso?
};
int main() {
    A a;
    a.f();
}
Inoltre, per curiosit�, ho provato a  dichiarare
const A a;
e mi segnala questo errore: passing `const A' as `this' argument of `const 
void A::f()' discards qualifiers
Cosa significa? 

 Cosa significa? 
La funzione membro f potrebbe modificare i dati membro della classe A 
(anche se in realtï¿œ non lo fa). Dunque non puoi chiamare la funzione A 
su un oggetto costante. Dovresti dichiarare f come segue:
void f() const {};
E.
Newsgroup: it.comp.lang.c++
Titolo: cin e cout

Salve a tutti, studio a scuola da un po' il linguaggio C e ora ci hanno 
fatto qualche accenno sul C++. Stavo provando a fare un semplicissimo 
programma:
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
  char frase[50];
  int a;
  int b;
  int somma;
  cout<<"\n\nil mio primo programma in C++";
  cout<<"\n\nscrivi una frase: ";
  gets(frase);
  cout<<"\n\n"<<frase;
  cout<<"\n\ninserisci primo numero: ";
  cin>>a;
  cout<<"\n\ninserisci secondo numero: ";
  cin>>b;
  somma=a+b;
  cout<<"\n\n"<<somma;
  getchar();
  getchar();
}
Il problema è questo: se non inserisco due getchar invece di una non 
vedo il programma si chiude subito dopo risultato della somma. Perchè??
Grazie in anticipo.

 Grazie in anticipo.

 programma:
Il tuo programma sembra scritto una dozzina di anni fa. Oggi si
scriverebbe cosi':
#include<iostream>
#include<limits>
#include<string>
int main()
{
  using namespace std;
  string frase;
  int a;
  int b;
  int somma;
  cout<<"\n\nil mio primo programma in C++";
  cout<<"\n\nscrivi una frase: ";
  getline(cin, frase);
  cout<<"\n\n"<<frase;
  cout<<"\n\ninserisci primo numero: ";
  cin>>a;
  cout<<"\n\ninserisci secondo numero: ";
  cin>>b;
  somma=a+b;
  cout<<"\n\n"<<somma;
  cin.ignore(numeric_limits<int>::max(), '\n');
  cin.get();
}
La chiamata cin.ignore(numeric_limits<int>::max(), '\n') e' quella che
svuota il buffer di input fino a fine riga.
Ciao,
Nicola

 svuota il buffer di input fino a fine riga.
Il primo parametro di ignore indica il numero di caratteri da ignorare fino 
al '\n'?
Non è sufficiente mettere alla fine la riga:
while (cin.get() != '\n'); ? 

 while (cin.get() != '\n'); ?
Non mi pare furbo rifare qualcosa che la libreria standard fa gia'.
Ciao,
Nicola

Non mi pare furbo rifare qualcosa che la libreria standard fa gia'.
La riga da me scritta fa proprio la stessa cosa? O e' solo il risultato 
ottenuto che coincide? 

 ottenuto che coincide?
Chi puo' dirlo? Lo standard specifica l'effetto che deve avere una
funzione di libreria, non come dev'essere implementata. Questo e'
quello che lo standard dice di ignore():
"[...] extracts characters and discards them. Characters are extracted
until any of the following occurs:
-- if n != numeric_limits<streamsize>::max() (18.2.1), n characters are
extracted
-- end-of-file occurs on the input sequence (in which case the function
calls setstate(eofbit),
which may throw ios_base::failure (27.4.4.3));
-- c == delim for the next available input character c (in which case c
is extracted).
Notes: The last condition will never occur if delim == traits::eof().
Returns: *this.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: carattere fine linea...

Salve!
mi aiutate per favore?
avrei bisogno di sapere come intercetto il carattere "0a" (andata a capo)
esadec.  dei txt.
o comunque come faccio a sapere quando č finita la linea.
grazie!
--
--
    --------------
   ----------------         
dodi...@tiscalinet.it
  ---------|--------
   --------|-------            ICQ: 36959563
    ------_|------
         - (_)# -


Newsgroup: it.comp.lang.c++
Titolo: strutture

#include<stdio.h>
#include<stdlib.h>
typedef char string[50];
typedef struct
{
  int giorno;
  int mese;
  int anno;
}Data;
typedef struct
{
  Data dataNascita;
  string nome;
  string cognome;
}Impiegato;
int main()
{
     Impiegato dipendenti[10];
     int a = 1;
     scanf("%s",dipendenti[0].nome);
     scanf("%s",dipendenti[0].cognome);
     scanf("%d",dipendenti[0].dataNascita.giorno);<- quì si blocca il prg
     scanf("%d",dipendenti[0].dataNascita.mese);
     scanf("%d",dipendenti[0].dataNascita.anno);
     while(a)
     {
     printf("%s",dipendenti[0].nome);
     printf("%s",dipendenti[0].cognome);
     printf("%d",dipendenti[0].dataNascita.giorno);
     printf("%d",dipendenti[0].dataNascita.mese);
     printf("%d",dipendenti[0].dataNascita.anno);
      a = 0;
     }
     system("PAUSE");
     return 0;
}

Scusate ma ho dimenticato il testo allegato
in pratica non riesco ad inserire anno,mese e giorno tramite scanf(),
e vorrei capire dove sbaglio.
grazie!

 scanf("%d",dipendenti[0].dataNascita.giorno);<- quì si blocca il prg
scanf vuole l'indirizzo di memoria della variabile in cui deve memorizzare 
il valore quindi devi usare:
scanf("%d",&dipendenti[0].dataNascita.giorno);
Le prime due righe funzionano perché la variabile è essa stessa un puntatore 
(char string[])
Ciao

Newsgroup: it.comp.lang.c++
Titolo: [Req:] Informazioni sulle funzioni C++

Qualcuno sa per caso dirmi dove posso trovare un listato (o qualsiasi cosa
del genere) dove vengano rissunte le funzioni C++?
Tanto per fare un esempio ho due manuali, uno del C e uno del C++ Builder ma
nessuno dei due mi da alcuna spiegazione sulla classe di funzioni
ofstream...
Grazie

...


Newsgroup: it.comp.lang.c++
Titolo: Istruzione _wexecl in C++ Builder 3

Salute a tutto il NG,
Ho il seg. problema con Borland C++ Builder 3:
dovendo lanciare l'esecuzione di un eseguibile (WIN32) da una
applicazione Builder, ho utilizzato l'istruzione _wexecl(char* path,
NULL) come suggerisce l'help, ma questa mi risponde che il file che io
le passo non esiste oppure il percorso specificato č errato.
Precisando che ho verificato piů e piů volte che il path non č sbagliato
(l'ho ricavato dal sistema stesso tramite cut & paste) e dal momento che
l'help non mi aiuta per niente, non so che pesci prendere.
Qualcuno di voi puň aiutarmi?
Grazie infinite..
--
--------------------------------------------------
Massimo Castellacci
Computer Science Graduation Course
University of Pisa - Italy
mailto:
cast...@cli.di.unipi.it
mailto:
mas...@cribecu.sns.it
http://www.cli.di.unipi.it/~castella/intro.html
--------------------------------------------------

> (l'ho ricavato dal sistema stesso tramite cut & paste) ....
sei sicuro di avere sostituito le " \ " con " \\ " ?
controlla.....

Precisando che ho verificato più e più volte che il path non è sbagliato

Newsgroup: it.comp.lang.c++
Titolo: [newbie] Costruttori e compagnia

Ciao, sto scrivendo la mia prima applicazione non-hello-world, e
vorrei sapere se ho capito una cosa.
Se una classe non contiene puntatori (né direttamente né
indirettamente) non è inutile dichiarare i vari costruttori e
distruttori, nonché assegnamenti overloaded? In quali casi è
necessario o consigliabile?
Grazie, giulio
Per favore togliete "!RemoveMe!" dall'indirizzo per rispondere
Please remove "!RemoveMe!" from the address to reply

Grazie, giulio
ciao, spero di dire cose giuste:
tu puoi voler costruire oggetti in diverso modo, ad es passando un intero,
un oggetto
della stessa classe -->costruttore di copia, e cosi' via. Vedi il
costruttore
come una funzione della tua classe di cui fai vari overload, se ti servono.
Tieni conto che il costruttore di copia viene implicitamente chiamato
qualora
tu passi la tua classe come argomento di funzione per valore, e quando
tu la ritorni da una funzione.
Il distruttore e' unico, e se non hai puntatori a memoria allocata con la
new, puo'
non far nulla.
Poi puoi fare l'overload di assegnamento se ti interessa qualcosa di diverso
dalla copia bit a bit della tua classe.
ciao
tiberio

 necessario o consigliabile?
Non so se ho capito bene; comunque...
Se tu non definisci esplicitamente l'operatore di assegnazione ed il
copy constructor, e se nel tuo programma uno di questi costrutti viene
usato implicitamente od esplicitamente, il default del linguaggio e'
un nuovo oggetto creato dall'originale come copia bit-per-bit.
Questo di norma e' adatto per classi che non richiamino operatori new
nei costruttori e che non facciano "cose strane" in genere (smart
pointers, etc.).
Semplificando un poco, se la tua classe contiene solo dati statici e
non richiama new nel ctor, puoi accontentarti del default.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

non richiama new nel ctor, puoi accontentarti del default.
Perfetto, solo... cos'è un ctor? :)
Grazie a tutti, giulio


 Perfetto, solo... cos'è un ctor? :)
constructor.


 l'aggettivo sbagliato.  Volevo dire "non allocati dinamicamente"...
Quindi "automatici", no?
EMG

non richiama new nel ctor, puoi accontentarti del default.
In generale e` sufficiente che non ci siano campi puntatori o
reference.
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

Perfetto, solo... cos'è un ctor? :)
abbreviazione di constructor, si usa anche dtor come
abbreviazione di distructor

Newsgroup: it.comp.lang.c++
Titolo: Eventi di controlli ActiveX in MFC

Egregi colleghi,
ho una domanda da porvi la cui ricerca di soluzione non mi fa dormire di
notte.
Spero che qualche gentile anima sia in grado di farmi passare l'insonnia.
Ordunque.
Utilizzo Visual Studio 6 SP2 in italiano.
Ho progettato un controllo ActiveX Multi-thread in VC++ utilizzando le MFC.
Per creare il progetto ho utilizzato MFC ActiveX ControlWizard,
che mi ha strutturato lo scheletro del progetto utilizzando le classi
COlePropertyPage
COleControl
COleControlModule
Per gestire il multi-thread (in configurazione Win32 Debug) ho settato i
seguenti parametri:
in Project Setting for Win32 Debug - C/C++ - Category: Code Generation:
Use run-time library -> Debug Multithreaded DLL
Struct member alignment -> 8 Bytes
Utilizzo la classe CWinThread per generare i vari thread.
Ho definito vari e proprieta', metodi ed eventi. Ed e' proprio sugli eventi
che nascono i problemi.
Ne ho definito uno (di evento) del tipo
void FireOnDataAvailable(short CmdId);
e lo richiamo nella CWinThread::Run dei miei vari thread.
Nessun errore di compilazione, ne' warnings.
Questo OCX lo uso in VB.
Quando mi arriva l' evento OnDataAvailable del moio controllo, se metto del
codice in VB per gestire
l'evento, mi si pianta VB e mi viene fuori un errore del tipo
L'istruzione "0xXXXXXXXX" ha fatto riferimento alla memoria a "0xXXXXXXXX".
La memoria non poteva essere "read".
e anche
Access violation .....
Il bello e' che non e' sistematico, dipende dalla quantita' di codice che io
metto per gestire l'evento.
Non e' un problema di VB, perche' ho provato a utilizzare l'OCX con un
container VC ma mi
da' gli stessi problemi.
Penso che sia un problema OLE.
Se qualcuno ne sa qualcosa ....
Grazie!

 wrote in message
7c5ul2$3n2$1...@serv2.iunet.it...


A me gli errori continuano ad esserci anche se compilo in modalita' release.
Una cosa che mi sono dimenticato di dire e' che se lancio l'applicazione
container VB da ambiente di progetto Visual Basic, se cioe' non lancio
l'eseguibile ma l'ancio il debag da VB (F5 per intenderci) allora funziona!
Non mi da gli errori sopra citati.

 wrote in message
7c815a$1og$1...@serv2.iunet.it...

Secondo te ho il diritto di prendermela con Microsoft?
Sarei perseguibile se dessi fuoco alla casa privata di Bill?

 wrote in message
7cai6j$8tc$1...@serv2.iunet.it...


Struct member alignment -> 8 Bytes
Se usi un allineamento a 4 byte (come pretende il VB) potresti gia'
avere un miglioramento. Se usi solo tipi *nativi* in realta' non
cambia niente.
----------------------------------------------------------------------------
Cercarsi anima gemella, amante vecchi film, passeggiate in montagna, teatro,
richiesta conoscenza assembler x86, ed esperienza comprovata stored procedure
Newsgroup: it.comp.lang.c++
Titolo: IMMAGINI SU PULSANTI

Salve,
vorrei creare dei pulsanti con delle immagini con MS VC 4.0 sui quali
cliccare.
Ho notato che nelle proprietą del pulsante che creo appare un check sul
quale c'č scritto BITMAP ma non sono riuscito ad abbinare l'immagine al
tasto
Potreste aiutarmi ?
Inoltre ho provato con quei tasti animati (che si creano inserendo un
aggetto OLE e cliccando su Anibutton, mi sembra) ma dopo aver creato il
file exe quando lo avvio non mi appare nulla sullo schermo !!!
Come mai ?
Grazie in anticipo
lapa...@iqsnet.it
 





tasto
mettere il checkbox non basta, devi anche usare la
CButton::SetBitmap() oppure il messaggio BM_SETIMAGE. Di solito si
mette nella OnInitDialog().
Gianpaolo Bottin
- Live Long and Prosper -

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

                Salve a tutti.
Sto imparando a programmare in c++.
Volevo sapere due cose a proposito delle librerie.
La prima è che una volta scaricate delle librerie non so come installarle.
La seconda è se ci sia un modo per sapere come si usano.
Grazie anticipatamente e scusate l'ignoranza.

La seconda è se ci sia un modo per sapere come si usano.
C'è allegata documentazione. Se non la trovi, prova a cercarla nel posto da
cui le hai scaricate. Se hai problemi con la libreria standard, chiedi qui.
Lanugo

Newsgroup: it.comp.lang.c++
Titolo: Persistenza  degli oggetti

Come si salvano e si recuperano da file  i dati fondamentali di oggetti
(classi base, derivate, ecc.)?
La libreria Boost non fornisce qualche classe che implementa la
persistenza degli oggetti?
Qualcuno sa indicarmi un tutorial online?.
Grazie.
Sergio
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Qualcuno sa indicarmi un tutorial online?.
Io ho sempre fatto la serializzazione sfruttando il meccanismo che le MFC 
offrono (quando facevo programmazione MFC), o a mano.
Ad ogni modo parlando di boost dai una occhiata.a: 
http://www.boost.org/libs/serialization/doc/index.html
Dando una occhiata al volo sembra quello che ti serve.
Tommaso Galleri

Newsgroup: it.comp.lang.c++
Titolo: Conversione << wchar_t* ---> CString >> e viceversa

Sono a conoscenza dell'esistenza delle funzioni WideCharToMultiByte() e
MultiByteToWideChar() mediante l'utlizzo delle quali è possibile
effettuare le conversioni in questione.
In effetti i dati vengono convertiti in modo corretto, ma alla chiusura
del programma viene segnalata un'eccezione non gestita, che ho
verificato essere legata all'utilizzo delle funzioni citate in
precedenza.
C'è qualcuno che può aiutarmi mostrandomi un'esempio di utilizzo di
tali funzioni?
Grazie in anticipo
Roby1973
Sent via Deja.com 
http://www.deja.com/
Before you buy.

 tali funzioni?
Volentieri, se chiederai sul gruppo giusto, it.comp.programmare.win32.
Alex

,


Newsgroup: it.comp.lang.c++
Titolo: Iterator ciclico?

Esiste un iterator di tipo "ciclico", che, in caso di scansione
multipla di un container, sollevi dall'onere di dovere, ad ogni
incremento, controllare il raggiungimento dei limiti? 
Come in questo esempio:
#include <iostream>
#include <vector>
int main()
{
  std::vector<int> v;
  v.push_back(1), v.push_back(2), v.push_back(3); 
  std::vector<int>::iterator it = v.begin();
  for( int i=0; i<9; ++i )
    {
      std::cout << (*it++) << " ";
      if( it==v.end() )  it=v.begin();
    }
}
// output: "1 2 3 1 2 3 1 2 3"
-- 
Ciao, Marvin

 incremento, controllare il raggiungimento dei limiti?
basta implementarlo...

Newsgroup: it.comp.lang.c++
Titolo: TDBGrid in C++Builder 3

Ciao, sono Stefano Tempesta, programmo principalmente in C++ e in Java.
Ho un problema con le TDBGrid del C++ Builder 3: non riesco a calibrare le
barre di scorrimento.
Inoltre vorrei abilitare l'opzione MultiSelect, ma non riesco poi a
individuare quali record sono stati selezionati.
Grazie per l'aiuto.
Stefano Tempesta
s.tem...@usa.net

 Grazie per l'aiuto.
Ciao
Roberto

Se notate, il database desktop non ha le barre di scorrimento sincronizzate
con la tabella aperta: quando apro un file db o dbf, il cursore della barra
verticale, si pone al centro mentre dovrebbe essere all'inizio; inoltre non
si sposta coerentemente con lo scrolling dei record. Insomma, FA SCHIFO !!!
Lo stesso succede con il componente TDBGrid in C++Builder, quindi,
presumendo che sia un problema di range non settato, come si fa a
'calibrare' suddetta barra verticale? (nessun problema, invece, con quella
orizzontale).
Punto ": il multiselect. La property SelectedRows e' di tipo TBookmark,
quindi utilizzabile solo se imposto un bookmark per ogni record selezionato.
Ma come si fa tutto questo? Durante l'esecuzione del programma, se l'utente
seleziona piu' record, solo uno e' comunque attivo (come indicato dal
cursore a sinistra nella DBGrid).
Soluzione?
Grazie a tutti per l'aiuto.
--
Stefano Tempesta
s.tem...@usa.net

Newsgroup: it.comp.lang.c++
Titolo: A proposito della FAQ...

Per la nuova FAQ del gruppo propongo anche le seguenti due:
Q: Dove posso trovare un manuale di C++ in rete?
A: Prendi Thinking in C++ di Bruce Eckel all'indirizzo
ftp://mindview.net/pub/eckel/TIC2e
.
Q: Dove posso trovare un compilatore C/C++ gratuito in rete?
A: Prendi il DJGPP per MS-DOS all'indirizzo
http://www.delorie.com/djgpp
.
EMG

Okay il Thinking in C++ (l'ho scaricato anch'io, ora sto tentando di
studiare di più l'inglese (alle medie ho fatto francese)); e capisco del
compilatore DOS, ma per Win32???
--
Diego "1985" Pettenò
per gli spammer la mail è
diego...@hotmail.com
per i messaggi seri è
diego....@tiscalinet.it

]
Newsgroup: it.comp.lang.c++
Titolo: Come capire il tipo che l'utente mette in cin?

Ho un programma che vuole in cin un int che assegno ad una varibile... come
faccio a sapere se l'utente ci mette una lettera tipo "a" e quindi
richiedere l'immissione?
Grazie a tutti, Andrea.

 richiedere l'immissione?
Al tuo posto leggerei l'intera riga di input e controllerei
successivamente il suo contenuto, scandendola o provando ad accedervi
con istringstream o sscanf.
Ciao,
Nicola

 ha scritto nel messaggio
news:3BD03A9B...@divalsim.it...


 Grazie ancora
Qualcosa come:
#include <iostream>
int main() {
  std::cout << "Scrivi il numero: ";
  int i;
  while ( ! ( std::cin >> i ) )
    std::cout << "Errore! Riscrivi: ";
  // usa i
}
Non l'ho nemmeno compilato, ma ti da l'idea.
Ciao,
Nicola

 ha scritto nel messaggio
news:3BD04F82...@divalsim.it...


     std::cout << "Errore! Riscrivi: ";
Credo che come minimo dovresti resettare cin e fare il flush del buffer,
altrimenti ti va sempre in errore.
Ecco una versione funzionante:
#include <iostream>
#include <limits>
int main()
{
   std::cout << "Scrivi il numero: ";
   int i;
   while(!(std::cin >> i))
   {
      std::cout << "Errore! Riscrivi:\n";
      std::cin.clear();
      std::cin.ignore(std::numeric_limits<int>::max(), '\n');
   }
   std::cout << "i = " << i << '\n';
}
Ciao  Manlio Perillo

 ha scritto nel messaggio
news:%gbA7.1986$HT2....@news1.tin.it...


 :)
Hai notato come mai quasi tutti sul NG hanno la pessima idea di
rispondere ai vecchi mess scrivendo la propria risposta sotto e non
sopra?
OPS... L'ho appena fatto pure io.....
Ciao
Gaetano.
-- 
Posted from 
dell-01.mm.eutelsat.org
 [194.214.173.17] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sopra?
Perche' "pessima"?  Logicamente, il quote viene prima.  Cosi' ci si
rinfrescano le idee sul problema di cui si sta parlando, prima di
leggere il nuovo contributo.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

Perche' "pessima"?  Logicamente, il quote viene prima. [...]
Dì la verità sei uno che le battute non le capisce molto :-)
-- 
Marco Barisione (ICQ 84277092)
Newsgroup: it.comp.lang.c++
Titolo: Freeze intermittenti

Non è strettamente un problema di programmazione C++, però...
 
Ho un programma in C++Builder che deve mandare via rete dei dati 
regolarmente dall'avvio in poi. Una macchina Win7 dove è installato ha 
dei freeze intermittenti subito dopo l'avvio, che si risolvono dopo un 
10 minuti circa. Però nel frattempo il programma perde la connessione e 
deve rifarla da capo ogni volta, il che è un problema abbastanza seccante.
 
Il debugger del C++Builder si freeza insieme al resto, per cui non mi 
serve a 'na cippa per la diagnosi :-( Credo sia un problema del sistema 
e non del programma, ma devo esserne certo. L'event viewer di windows 
segnala alcune chiamate a funzioni di rete che vanno in timeout (non 
fatte dal mio programma) ma non so se sono quelle, né so come bloccarle.
 
C'è un tool che può aiutarmi a risolvere un caso come questo??


Mi sembra che hai già diagnosticato bene il problema, e sinceramente non vedo
alcuna soluzione lato applicativo. Puoi provare a "mettere a posto" il
sistema, far partire l'applicativo con un delay oppure boh.
Più che altro mi sembra strano che hai bisogno di un'applicativo Win che
parta in automatico e si connetta alla rete.. spyware? :D
 
Ciao!

 parta in automatico e si connetta alla rete.. spyware? :D
 
Software di security. Uno spyware ufficiale, diciamo :-)
Ugualmente, non mi va di cavarmela dando la colpa a windows e dicendo 
"eeeh meglio di cosě non si puň fare..." anche perché al cliente 
interessa che funzioni, non che la colpa non č la mia :-)
Newsgroup: it.comp.lang.c++
Titolo: è possibile...

Ciao a tutti :-)
Posso fare una domanda "teorica", indipendente dal linguaggio? È possibile
creare:
* degli alberi
* che siano perfettamente bilanciati
* e che siano "alberi binari di ricerca"
con un solo comando "insert"? Secondo me è impossibile (a meno di scegliere
dei numeri giusti), ma sembra che debba fare proprio questo per l'esame di
Fondamenti di Informatica 1...
Grazie - ciao :-)
--
Marco Zanon (
m.z...@usa.net
)
http://www.geocities.com/SiliconValley/Peaks/6455
(BUY CDS AT THE LOWEST PRICES through my site!!!
Zamorano fan page, free MIDI mailing list, Music db...)

Ciao,
mantenere l'albero bilanciato mano a mano che si
inseriscono degli item è possibilissimo:
basta che tu faccia partire la procedura di bilanciamento
alla fine di ogni inserimento ! Tanto non parli di ottimizzazione
dei tempi di esecuzione, ma di risultati finali.
Del resto è anche giustificata la necessità di avere un albero
sempre bilanciato quando il numero di accessi in lettura è
ordini di grandezza superiore a quelli in scrittura, ti pare ?
Saluti.
Davide.

 con un solo comando "insert"?
Credo di si, ma non mi chiedere come...
EMG

Ciao Davide,
ok per il bilanciamento, ma puň essere bilanciato e "binario di ricerca"
assieme (cioč: per ogni nodo, i numeri piů piccoli a sx e i piů grandi a
dx)?
Grazie, ciao :-)
Davide <I....@office.now> wrote in message 79c5ir$4ig$1...@menelao.polito.it...

 dx)?
Si, ogni tanto sara' necessario riorganizzare l'albero, cambiando
anche il nodo radice. Solo bilanciato sarebbe troppo facile,
comunque questo dovrebbe essere uno degli esercizi piu' difficili
di Fondamenti 1.
	Mauro

Marco Zanon wrote:

 wrote in message
36BA28D6...@flashnet.it...

Fondamenti di Informatica 1...
e' lo stesso lavoro che ho fatto io parecchi anni fa per TAMC.
Consiglio fortemente un salto in biblioteca a consultare questo testo:
Niklaus Wirth -
Algotirmi + Strutture Dati = Programmi
ed Tecniche Nuove
da pagina 213 in poi (ci sono anche gli algoritmi!!!)

Č possibile


>È possibile

Newsgroup: it.comp.lang.c++
Titolo: tempo di esecuzione

Il mio problema è questo:
vorrei misurare il tempo di esecuzione di un codice, con una precisione
almeno di millisecondi
sapete dirmi quali funzioni posso usare, e se sono affidabili?
(se poi girassero anche su linux sarebbe ancora meglio)
Ho provato questo codice:
#include <time.h>
clock_t start,finish;
 double result;
 n = 500000000;
 printf(" Esecuzione di %ld di somme di interi ... \n", n);
 start = clock();
 for (i=0; i<n; i++) {
  z = z+1;
 }
 finish = clock();
 result = (double)(finish-start);
 printf(" Tempo trascorso in cicli: %10.2f\n", result);  <--- mi da un
valore di 6810 ???
 // ma dovrebbero essere milioni di cicli!
 printf(" Tempo trascorso in secondi: %2.9f\n\n ", result/CLOCKS_PER_SEC);
// mi dà 6,81 secondi
mi chiedo, è affidabile?
e se si perchè i cicli che mi dà sono così pochi?
dato che il tempo in secondi è esatto (cronometro alla mano) i cicli
dovrebbero
essere (processore a 450MHz) 450*10^6 * 6,81= 3,06 * 10^9
grazie per le risposte
p.s. sapete se c'è un modo per sapere qual'è il tempo totale speso da una
programma ad eseguire il codice utente e quello speso dal sistema operativo
su windows 98?

 essere (processore a 450MHz) 450*10^6 * 6,81= 3,06 * 10^9
Ti e' sfuggito il fatto che CLOCKS_PER_SEC e' una macro definita
nell'implementazione del compilatore. Quindi per forza non ha nulla a che vedere
con la velocita' del processore (e' uguale sia che il programma giri su un 8086
sia che giri su un PIII a 1GHz!).
Infatti clock si basa sull'orologio di sistema, non sul clock della CPU. Ovvero
ha una risoluzione di circa 1/25 di secondo. Nota comunque che potrebbe anche
avere una risoluzione di 1 secondo ed essere compliant!
Con i moderni processori non ha senso usare clock per il timing del codice a
meno che i tempi di esecuzione siano di parecchie ore!
Timer con risoluzione maggiore esistono, ma sono platform dependent. Quindi deve
vedere le API dei vari sistemi operativi su cui lavori.
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: menu a tendina sotto dos

qualcuno ha notizia di una libreria che metta a disposizione menu a tendina
sotto dos?
deve esistere per forza magari scaricabile sulla rete con relativo manuale e
non importa se è scritta in c tanto va bene anche per c++.
datemi una mano!
grazie
vostro ugo ariu

a tendina sotto dos?
http://oak.oakland.edu/simtel.net/msdos/c-pre.html
boss01.zip  129K Window Boss 01.07.91, windows for C pgms, 1of4
boss02a.zip 199K Window Boss 01.07.91, windows for C pgms, 2of4
boss02b.zip 220K Window Boss 01.07.91, windows for C pgms, 3of4
boss03.zip   76K Window Boss 01.07.91, windows for C pgms, 4of4
http://oak.oakland.edu/simtel.net/msdos/cpluspls.html
objeas3a.zip 502K Graphic/text user interface C++ library, 1of2
objeas3b.zip 238K Graphic/text user interface C++ library, 2of2
Tra i due preferirei OBJEAS3* in quanto e' grafico e ti permette di
dare un look veramente professionale ai tuoi programmi.
ciao

Newsgroup: it.comp.lang.c++
Titolo: Leggere e scrivere file non testuali, lancio processi esterni

Salve a tutti dovrei creare un client ed un server che si scambiano dei 
file eseguibili. Il server invia il file richiesto dal client che 
ricevutolo lo lancia.
Le mie domande sono due:
1)i file exe come li apro e come li leggo e come li invio a pezzi nel 
socket? Posso utilizzare i normali ifstream ed ofstram? Che funzioni 
devo utilizzare per prendere i dati? Cosa al posto della getLine()?
2)Per lanciare un processo esterno tipo "filericevuto.exe" cosa devo 
utilizzare?
Programmo sotto windows.
Grazie a tutti, ciao ciao.

 utilizzare?
 >
Questa domanda e' OT.
La risposta dipende dal sistema operativo che usi, quindi fai 
riferimento alla documentazione ad esso relativa.
--
Roal Zanazzi

Programmo sotto windows.
Guarda la documentazione di
ShellExecute()/ShellExecuteEx()/CreateProcess.
Per qualsiasi approfondimento sulla programmazione per Windows,
rivolgiti a it.comp.programmare.win32.

 rivolgiti a it.comp.programmare.win32.
Cioč per leggere dal file posso usare getline?
Grazie, ciao ciao.

 ShellExecute()/ShellExecuteEx()/CreateProcess.
O più semplicemente il standard "system".
--
James Kanze              Gabi Software   email: 
kanze...@neuf.fr
Conseils en informatique orientée objet/
                   Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, 
+33 (0)1 30 23 00 34

O piů semplicemente il standard "system".
Normalmente l'API del sistema operativo offre degli "agganci" in piů
per operazioni specifiche da parte del programma.

 in più per operazioni specifiche da parte del programma.
Solo l'API del sistema bisogna di una conoscenza più
spezialisata, che non hanno tutti. Se è possibile fare qualcosa
senza scendere a questo nivello, vale meglio. (Non è sempre
possibile, ma in questo caso si.)
--
James Kanze (GABI Software)             
email:james...@gmail.com

Newsgroup: it.comp.lang.c++
Titolo: BCPPB: Intercettare X e Chiudi Alt+F4

Borland C++ Builder 3 User
----------------------------------------
Salve a Tutti,
Vorrei sapere con il componente scheda (finestra normale)
dove è possibile intercettare nel codice la chiusura
dell'applicazione tramite il bottone crocetta o tramite
Chiudi del menu della finestra, per poter inserire
delle funzioni prima che termini l'applicazione.
Nota: so che potrei inserire del codice nel file
Aplication creato dal compilatore, per esempio dopo
Aplication->Run();     o prima dell'ultimo     return;
ma, da qui non riesco a richiamare le mie funzioni
nel codice della scheda principale.
Grazie!!!
            Francesco
 
met...@rosenet.it




wrote:

Gestisci l'evento OnCloseQuery.
Ciao, Rob.
_________________________________________________
Roberto Gerola
e-mail: 
NOSPAMr...@tin.it
WWW: 
http://space.tin.it/computer/rgerola
_________________________________________________
Per inviarmi email togliere NOSPAM dal mio indirizzo.

Newsgroup: it.comp.lang.c++
Titolo: non me lo spiego (ancora hook)

WM_CHAR per spedire caratteri alla finestra che ha il focus
KeyboardEventEx sotto NT, keybd_event sotto Win95.
Alex

> 
http://www.geocities.com/sunsetstrip/stage/7787
 <<
<<<<<<<<<<<< 
DucaCr...@iol.it
 >>>>>>>>>>>>>>

capo da tutte le applicazioni che lo ricevono)....?
No, non esiste nulla che "sia interpretato come 1 ``a capo'' da _tutte_
le applicazioni che lo ricevono"; c'e` troppa varieta` fra una applicazione
e l'altra.  VK_RETURN (spedito con WM_KEYDOWN, WM_KEYUP,
normalmente simulati con keybd_event ecc), ad esempio, ci arriva
vicino -- ma, se l'applicazione e` in un dialogo, puo` benissimo scegliere
di interpretare questo, NON come un "a capo", ma appunto come
interpreterebbe un Enter battuto a tastiera dall'utente, cioe` come
equivalente al clic sul pushbutton di default (e cosa faccia questo
clic, ovviamente, e` rigorosamente dipendente dall'applicazione).
L'interpretazione degli eventi di tastiera da parte delle applicazioni
dipende, appunto, dalle applicazioni stesse, che, tra l'altro, possono
benissimo comportarsi in modi diversi a seconda dello stato in cui
si trovano (dialoghi modali e/o non-modali, su quale finestra, dialogo
o sottofinestra dell'applicazione sia il focus, su quale controllo entro
detta finestra ecc, e chi piu` ne ha, piu` ne metta).
Alex
Newsgroup: it.comp.lang.c++
Titolo: factories pattarn vs. letter/envelope

Salve a tutti,
sto sempre sviluppando un benedetto software in C++.
Adesso la domanda e' questa:
Supponiamo di avere una gerarchia con una interfaccia e differenti
implementazioni di una classe.
Supponiamo che la gerarchia faccia parte di una libreria. Supponiamo ora
che ci disturbi avere nell'eseguibile una funzione che decida quali
oggetti istanziare mediante, per esempio, uno switch. Allora, facciamo
un "costruttore virtuale". E qui, seguendo il buon vecchio Bruce Eckel o
comesichiama, abbiamo praticamente tre possibilita':
1) funzione statica nella base class che ritorna un puntatore in
funzione di un parametro. L'uso e':
baseclass * bsp = bsp::factory(parameter);
2) classe parallela alla gerarchia responsabile della creazione degli
oggetti nella gerarchia (eventualmente a sua volta gerarchizzabile
polimorficamente). L'uso e':
baseclass * bsp = makeobjects.make(parameter);
3) Usare il pattern letter-envelope e il pattern proxy
contemporaneamente, fare un po' di mastruzi (operazioni complicate in
genovese) e arrivare a scrivere:
baseclass bsp(parameter);
qual'e' secondo voi la strategia migliore? Io parteggio per la
seconda....
Un'altra domanda, forse un po' off topic:
ho una funzione che e' dichiarata:
std::vector<int> myfunc(int);
ed e' definita:
std::vector<int> myfunc(int a){
    return 0;
}
A parte il fatto che non ha molto senso la funzione in se', mi spiega
qualcuno come si fa a convertire un int (lo 0) in un vector<int>? In
Visual C++ 6.0 lo compila con gioia...

 Visual C++ 6.0 lo compila con gioia...
std::vector<T> ha un costruttore che prende un size_t (dovrebbe
essere explicit...): costruisce un vettore di quella lunghezza (con
N elementi tutti inizializzati di default).
Mi pare che sia un errore accettarlo qui (a causa dell'explicit), ma
e` un errore, spero, comprensibile.
Alex

 seconda....
Io voto la prima, per questioni di stile personale. Non mi piace introdurre
una classe solo per il factory, o almeno non mi piace farlo se fa parte
dell'interfaccia della mia libreria.
Però ho visto un sacco di volte usata anche la seconda ....
Bye
-----
Giovanni Bajo
Lead Programmer
Prograph Research S.r.l.
http://www.prograph.it