mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: scrivere su un file 1 bit

Ciao a tutti
cè il modo di scrivere su un file un bit per volta...?
bit non byte mi raccomando...
grazie mille NG

 bit non byte mi raccomando...
Quindi vuoi ad esempio ottenere un file lungo, che so, 11 bit?
-- 
Luc.

 
il filesystem ne sara` felice...
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG

 bit non byte mi raccomando...
La risposta è *no*.
Ovviamente pero' puoi bufferizzare e scrivere a gruppi di 8...
Saluti
--
NinjaCross
 
www.ninjacross.it
Membro dell'Italian Agile Movement.
www.agilemovement.it
Sconnetti il chip isolineare per contattarmi
ninjacross_CH...@yahoo.it

 wrote

NO!
Puoi pero' aspettare di averne 8 e spedire il byte.
Ad ogni modo se ci dici cosa devi fare possiamo forse aiutarti meglio....
quale applicazione avrebbe bisogno di scrivere un bit alla volta?
Tommy

 quale applicazione avrebbe bisogno di scrivere un bit alla volta?
La compressione di Huffman ad esempio.

 ha scritto nel messaggio
news:b6a352$fte$1...@lacerta.tiscalinet.it...


 La compressione di Huffman ad esempio.
Si, l'ho implementata... basta aspettare di avere 8 bits e poi scriverli.
Puoi sempre scrivere un bit alla volta in un unsigned char e quando e'
finito buttarlo sul disco.
(esistono anche modi piu' performanti....)
Tommy

 infatti è proprio per questo che mi serve
bene, divertiti con gli operatori bit a bit per scrivre i bytes e poi
metterli su disco.
Tommy

 infatti è proprio per questo che mi serve
E' abbastanza un classico!
Comunque ti hannop già suggerito come fare: completi il byte ad ottetti di
bit e quando è ultimato lo scrivi sul file.
Anche per la sua lettura (nel decoder) prelevi un byte alla volta e poi
leggi uno ad uno i suoi bit, quando arrivi all'ultimo leggi un altro byte e
così via...
Come ti ha ricordato Tommy esistono anche metodi più performanti però
ovviamente questo è il metodo più elementare, e poi bisogna vedere quanti
gigabytes devi comprimere!! :)))
Ricordati alla fine della scrittura di madare 7 bit per il flushing, in modo
che si completi il byte e così ti viene scritto su disco anche
quest'ultimo...
L'ho appena implementata ad uso didattico (proprio in C++) e presto metterò
sul mio sito un articolo proprio sul compianto Huffman e soprattutto sulla
sua mitica compressione!
Newsgroup: it.comp.lang.c++
Titolo: PROPOSTA

 magari.....
Magari, insieme, trovi qualcuno che ti spieghi le basi...
--
Gerolamo

Newsgroup: it.comp.lang.c++
Titolo: switch e standard

Salve, se faccio
int x=6;
switch(x){
case 1 ... 10: cout << "ciao\n"; break; }
g++ 3.2 me lo compila, ma volevo sapere se i 3 puntini
che ho messo per indicare il range 1-10 facciano parte
della sintassi C++ STANDARD.
Grazie per le eventuali risposte,
Alex
---------
icq: 132581870
email: 
el_co...@libero.it
---------

 della sintassi C++ STANDARD.
No, non e' standard. Devi specificare esplicitamente tutti i case:
case 1:
case 2:
e via dicendo.
Ciao,
Nicola


Grazie.
Alex

Newsgroup: it.comp.lang.c++
Titolo: Come aggiungere un'icona?

Ho un EXE in C++ e vorrei assegnargli un icona.Come posso fare?

 Ho un EXE in C++ e vorrei assegnargli un icona.Come posso fare?
Sei OT, non ha nulla a che fare con il C++ ma piuttosto con la
programmazione windows in C++...
Ad ogni modo basta che crei una risorsa e poi a tale risorsa aggiungi una
icona.
Poi ricompili e.... voila' l'exe ha quella icona.
Tommy

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

Come si ottiene una rappresentazione ascii su due bytes del modulo
risultante:
es somma 1234
   moudlo a 100 =34
   result = 34  (0x33 0x34) 
come si ottiene 34 in esadecimale e stamparlo in console
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 come si ottiene 34 in esadecimale e stamparlo in console
Non mi sembra di capire bene la domanda.
stai gia' facendo le operazioni in esadecimale quindi il
34 in realta' e' 3*16+4 ?
in tal caso
int n = 0x34;  // il numero di partenza
char exa[]="0123456789ABCDEF"; //tabellina conversione
char c[3];
c[0]= exa[n >> 4]; // (e' come fare diviso 16)
c[1]= exa[n & 15]; // (e' come fare modulo 16)
c[2]= 0;
in c[0] ci sara' il carattere '3'
e in c[1] ci sara' il carattere '4'
in c[2] c'e' il terminatore 0
e con
cout << c;
stampi "34" a console.
ciao,
g.

E' vero mi sono spiegato male scrivo quello che mi chiede l'esercizio
...
 il campo chk costituito da 2 bytes (da 0x30 a 0x39 ciauscuno) è così
  calcolato
  somma 1234
  modulo a 100 = 34
  cks = 34 (0x33 0x34)
  quindi se non ho capito male dovrei convertire un intero in hex ed il
 risultato ottenuto lo passo ad un char[] ....
 Ciao e grazie
...


"Devis " ha scritto 
: Come si ottiene una rappresentazione ascii su due bytes del modulo
: risultante:
: 
: es somma 1234
:    moudlo a 100 =34
:    result = 34  (0x33 0x34) 
: 
: come si ottiene 34 in esadecimale e stamparlo in console
: 
Se vuoi che, dato result = 34, ti stampi "33 34" puoi fare
cosi`:
#include <iostream>  // cout
#include <iomanip>   // hex
#include <sstream>   // stringstream
#include <algorithm> // copy
#include <iterator>  // i/ostream_iterator
int main()
{ using namespace std;
  int result = 34;
  copy (
    istream_iterator<char> (
      static_cast<stringstream&>(stringstream().flush() << result)
    ),
    istream_iterator<char> ( ),
    ostream_iterator<int> (cout << hex, " ")
  );
}
se vuoi che ti stampi 22 (34 = 2*16 + 2)
int main()
{ using namespace std;
  int result = 34;
  cout << hex << result;  
}
Massimo
Newsgroup: it.comp.lang.c++
Titolo: Aiuto

Ho un problema semplice ma che non riesco a risolvere.
Come faccio a disabilitare un bottone in una toolbar ? (l' ID del bottone
non è associato anche ad un menu !!)
Ho provato in mille modi.
Aiutatemi per favore.
max_pa...@iol.it

non è associato anche ad un menu !!)
Non dici a che livello e con che framework stai programmando...
se in MFC, studia la ON_UPDATE_COMMAND_UI e parenti!-);
se in SDK nudo, il messaggio TB_SETSTATE e` quel che cerchi.
Alex

Newsgroup: it.comp.lang.c++
Titolo: L'Onda

 Il nome: L'Onda, raduno internazionale di chattatori in Internet.
Ma questo che è diventato il newsgroup degli imbecilli?!
EMG

...

Credo di si.
ZEC

Newsgroup: it.comp.lang.c++
Titolo: Cd html con database

Un caloroso saluto al NG! Dovrei realizzare un Dvd-Rom che accede ad un
database di 1000 documenti pdf, chiaramente l'utente finale NON
dovrebbe installare nulla sul suo PC tranne
(eventualmente) qualche plug-in che deve risiedere sul dvd stesso.
Avete delle idee ? Qual'è il database migliore in questo caso?
Piattaforma: Windows
Tipologia Applicazione: archivio biblioteca
Struttura dati:
1. Titolo
2. Sottotitolo
3. Autore
4. Casa
5. Anno
6. Parole chiave (da 1 a 8)
7. Link pdf del documento o libro
8. Note
All inizio una query a testo libero cerca nella lista di 54 tipologie
di parole chiave predefinite (campo 6) il termine. Alternativamente 1
menu a tendina (lungo lo so) aiuta l-utente alla ricerca della parola
chiave.
La ricerca può essere effettuata solo per il campo 6, quindi il lavoro
dovrebbe essere facilitato. Così mi è stato richiesto lo so che è
curioso.
L'output deve essere una colonna report html con i campi riassunti
affiancati ad es.
TITOLO | SOTTOTITOLO |  AUTORE | CASA EDITRICE | ANNO | LINK PDF | NOTE
|
Devo utilizzare prodotti del tipo filemaker? Cristal Report? Access?
Spero mi possiate aiutare. E' urgente.
Grazie 
Marina Ostiani
mari...@hotmail.com

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

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

>NEO<<

>NEO<<


it.comp.os.linux.development.
qui sei OT.
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://www.cs.unibo.it/~mbellett
Linux registered user 299762 @ Linux registered machine 213003

Newsgroup: it.comp.lang.c++
Titolo: visualizzare bitmap

salve...
ho un problema. non riesco ad aprire e visualizzare una bitmap
direttamente da codice.
in genere lavoro sotto windows
grazie.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 in genere lavoro sotto windows
Prova a chiedere su it.comp.programmare.win32 .
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Conversione da AnsiString a Int (BC++1.0)

Volevo fare un semplice Form di immissione di dati numeri in BC++,
ho usato TEdit ma restituisce delle AnsiString. In Delphi e' possibile
trasformarle in interi o double, in BC++ come si fa (atoi() no!)
Grazie!
Maurizio

 wrote in message
83cs7l$n6o$1...@pisanino.unipi.it...

Newsgroup: it.comp.lang.c++
Titolo: Editor C++ per winzoz?

Tranne Turbo C++ per dos...
.....c'è qualche programmorz magari scaricabile da internet e magari....
......IN ITALIANO?
Grazie
--
Hello Webber
""allora...2 varibbele independenti ix e ipy metetele in if <100""

 ......IN ITALIANO?
ancora meglio, ce l'hai già: notepad :)
ad ogni modo...
beh, c'è emacs che puoi scaricare e compilare che funge da buon ide anche
per C++, oppure GVim, solo che bisogna perder tempo a settar la lingua...

Tra i migliori sicuramente il TextPad, anche in italiano, 
www.textpad.com
--
--
Lello Mele
--
HOMEPAGE: 
http://www.lellomele.it
eMAIL   : 
v...@libero.it

Newsgroup: it.comp.lang.c++
Titolo: Base o Basi di R3???

Ho da un pň di tempo alcuni dubbi che riguardano il seguente esercizio:
Elencare le basi di R3 incluse nel sottoinsieme .
S = {(1,2,1), (1,1,0), (,1,2,3), (0,0,1)}
...a prima vista avrei detto che all'interno di S vi č una sola base... ma
poi riflettendo bene mi č sembrato di ricordare che basi formate dagli
stessi vettori possono differire anche per solo l'ordine dei vettori,
ricordo male?
...voi come lo risolvereste questo esercizio?
thx! 

SE SONO LINEARMENTE INDIpendenti possono formare una base!prova a
ridurre la matrice che formano!!!ciao ciao

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

Newsgroup: it.comp.lang.c++
Titolo: ciclo complesso

Array così: ad ogni valore della 1a colonna corrisponde uno in 2a colonna
2	25
25	27
27	60
4	50
27	61
riuscire a
scrivere questo
2	25,27,60,61
4	50
i cicli dovrebbero fare tali passaggi:
-il 2 non è a destra allora riscrivo in prima colonna e associo il valore
che già ha (25)
-il 25 si trova anche in 2a colonna, allora il suo valore 27 va a fianco
del 25
etc...
che codice usare?

padew ha scritto:

Mi puzza tanto di homework...
Dato che hai postato su un newgroup sul linguaggio C++ potresti usare, 
appunto, del codice scritto in C++.
Sembra banale, puoi sforzarti un po' di piu' per i tuoi compiti a casa.
-- 
Roal Zanazzi
Newsgroup: it.comp.lang.c++
Titolo: Forward declaration di struct annidata

Come da subject, c'e' modo di farlo?
Premesso che "Pluto" e` qualcosa del tipo:
class Pluto
{
public:
    struct Data { /* ... */ };
    const Data &Get() { return data_; }
    void Set(const Data &d) { d = data_; }
private:
    Data data_;
};
Vorrei poter mettere in un header qualcosa del tipo:
class Pluto;
struct Pluto::Data;
void pippo(const Pluto::Data &);
Senza dovermi prima includere l'header con la definizione di Pluto per 
evitare la crescita a dismisura delle dipendenze.

 evitare la crescita a dismisura delle dipendenze.
Non sono convinto che si possa. Quello che puoi certamente fare e'
definire Data all'esterno della definizione di Pluto, in modo da poter
gestire il tuo caso di esempio includendo solo quest'ultima.
Ciao,
Nicola

 gestire il tuo caso di esempio includendo solo quest'ultima.
Googlando (keyword nested forward declaration e un po` di pazienza) ho 
risolto cosi`:
nell'header:
template <typename PD>
void pippo(const PD &);
nel cpp, che include la definizione di Pluto:
template<> void
pippo<Pluto::Data>(const Pluto::Data &d)
{
  /* */
}
Sembra funzionare, anche se non c'e' nessuna definizione generica del 
template linka correttamente.

 
 > class Pluto
 > {
 > public:
 >    struct Data { /* ... */ };
 >
 >    const Data &Get() { return data_; }
 >    void Set(const Data &d) { d = data_; }
 > private:
 >    Data data_;
 > };
 >
 > Vorrei poter mettere in un header qualcosa del tipo:
 >
 > class Pluto;
 > struct Pluto::Data;
 >
 > void pippo(const Pluto::Data &);
Basta che fai:
// nello header
class Pluto;
struct Pluto_Data;
void pippo(const Pluto_Data &);
// nell'implementazione:
struct Pluto_Data {
	//...
};
class Pluto
{
public:
    typedef Pluto_Data Data;
    const Data &Get() { return data_; }
    void Set(const Data &d) { d = data_; }
private:
    Data data_;
};
// E.

 template linka correttamente.
L'inconveniente è che non puoi avere altre funzioni pippo che non siano 
template e che se scrivi
pippo(17)
l'errore viene segnalato solo in fase di linking.
E.
Newsgroup: it.comp.lang.c++
Titolo: Saluti a tutti e... ovviamente... problema (COM)

Buongiorno a tutti,
    dopo 3 anni di assenza torno a navigare per queste rotte, spinto anche
da una problematica che mi sta uccidendo ;) :
Premessa: Sto scrivendo una applicazione con un COM Client ed un DCOM
Server. usando ATL 3.0
Come si fa a dichiarare, in una interface, un metodo che ha come parametro
un oggetto da me definito all'interno del componente?
Mi spiego: ho un oggetto CHardwareAsset ed un altro CConfigurationServer. Un
metodo dell'interfaccia IConfigurationServer (IUnknown) sarą (all'interno
del file IDL)
HRESULT AddHardware (CHardwareAsset CHA)
La classe CHardwareAsset NON ha intefacce, in quanto "trasparente" al mondo
esterno, ma usata massivamente all'interno del componente.
Mi stavo chiedendo se per poter essere istanziata da altri oggetti ogni
classe deve avere interfacce.... non mi era mai capitato prima.... mah....
Visto che NON sono stato chiaro, resto a disposizione per chiarimenti ;)
Grazie per l'attenzione
Morenz
ps: togliere NOSPAM dall'indirizzo per messaggi personali.

 metodo dell'interfaccia IConfigurationServer (IUnknown) sarà (all'interno

Newsgroup: it.comp.lang.c++
Titolo: Problema classe gestione vettori (stupido)

Sono nuovo all'uso delle classi perciò se ho fatto una supidaggine non mi
date addosso :))
Vorrei poter definire una funzione che fonde due array statici
di tipo vector (vedi in seguito
per specifica della classe vector) in un terzo array sempre di tipo vector.
class vector{
     public:
vector(char* NAME = "no name", int N = 0);
int get_n_elem()const{return n_elem;}
friend void fusion_2(const vector, const vector, vector&);
     private:
enum{n_max = 100}; //numero massimo elementi
int n_elem; //elementi dell'array, specificati a momento di compilazione
int v[n_max];
char* name; //nome array
};
nel file di implementazione la funzione fusion_2 è:
void fusion_2(const vector v1, const vector v2, vector& vf){
int t1 = 0;
//ad esempio
cout << v1[t1] << "\n"; //ERRORE: no match for `const vector &[int]'
}
da premettere che il costruttore della classe ha in ingresso una chiamata
del genere:
vector v1("array 1", 20);
che produce correttamente un array di 20 elementi.
Se invece intendo accedere agli elementi di un array (sia mediante
funzione ordinaria che funzione friend) che non sia
indicato con il nome della variabile membro privata della classe (cioè v)
mi dà l'errore riportato.
Come devo fare per poter usare gli elementi di un array di tipo vector?

 ha scritto nel messaggio
news:zbzMa.4406$xK6.1...@news1.tin.it...

** Articolo inviato tramite i servizi gratuiti di 
www.x-privat.org
 **

 Spero di esserti stato d'aiuto.
Utilissimo, grazie.

Newsgroup: it.comp.lang.c++
Titolo: Dilemma sui namespace...

[Scusate per il doppio invio]
Salve, ho un quesito abbastanza semplice.. che mi fa venire dei
dubbi...
Qual e' la sintassi corretta per l'uso di un namespace??
In un file header dichiaro dentro un namespace una classe ...
esempio:
namespace A
{
	class Pippo
	{
		public:
			Pippo();
			~Pippo();
	};
}
nel file contenente l'implementazione come scrivo il corpo di Pippo ??
namespace A
{
	Pippo::Pippo()
	{
	}
}
o
A::Pippo::Pippo()
{
}
??? Qual e' la sintassi corretta? Credo nessuna delle due .. visto che
un compilatore accetta la prima, un altro ne la prima ne la seconda...
Mi sto riferendo a Vc++ 6 e Vs.net, ancora non ho provato con c++
builder.. 
Grazie e scusate per il send errato
Antonio

 }
Secondo me dovrebbe essere corretta anche questa, cosi' come:
using namespace A;
Pippo::Pippo() {}
(Se nel file non c'e' nient'altro non c'e' niente di male).
Ciao,
Nicola


Generalmente si sconsiglia di riaprire il namespace nel file
dell'implementazione, in quanto sarebbe più facile dichiarare erroneamente
nuovi identificatori. La seconda definizione è IMHO quella più adatta, anche
se nulla vieta di includere il namespace A con 'using namespace A' e quindi
omettere il qualificatore A:: nel resto dell'implementazione. Io evito
quest'ultimo metodo, preferisco specificare sempre il namespace a cui
l'identificatore si riferisce.
Marco
Newsgroup: it.comp.lang.c++
Titolo: Problema: 142 warning!!!

Ho compilato questo brevissimo codice(utilizzando VC++ 6.0)e ho dovuto
attendere diversi secondi prima di vedere comparire ben 142 warnings. Cosa
non va?
Grazie.
Marco
#include <vector>
#include <string>
#include <map>
using namespace std;
int main() {
 typedef vector<string> figli;
 map<string, figli, less<string>, allocator<figli> > famiglie;
 famiglie["Bianchi"].push_back("Marco");
 famiglie["Bianchi"].push_back("Andrea");
 famiglie["Rossi"].push_back("Barbara");
 return 0;
}

 non va?
less<string> e allocator<figli> sono i default; una volta cancellati e
lasciata la sola "map<string, figli> famiglie;" egcs compila il tutto
senza errori.  magia nera?
invece il compilatore kai compila senza errori tutto quanto:
MLO@axcdf4 40 $ uname -a
OSF1 
axcdf4.pd.infn.it
 V4.0 878 alpha alpha
MLO@axcdf4 41 $ KCC -V -o foo foo.cxx
KAI C++ 3.3e (KCC) -- Sep 23 1998 -- (C) Copyright 1994-1998 Kuck & Associates, Inc.
MLO@axcdf4 42 $ cat foo.cxx
#include <vector>
#include <string>
#include <map>
using namespace std;
int main() {
 typedef vector<string> figli;
 map<string, figli, less<string>, allocator<figli> > famiglie;
 famiglie["Bianchi"].push_back("Marco");
 famiglie["Bianchi"].push_back("Andrea");
 famiglie["Rossi"].push_back("Barbara");
 return 0;
}
MLO@axcdf4 43 $ c++ --version
egcs-2.91.66
MLO@axcdf4 44 $ c++ -o foo foo.cxx
foo.cxx: In function `int main()':
foo.cxx:8: `allocator' undeclared (first use this function)
==> sembra che l'errore sia in vc++6, che non implementa correttamente
la stl; anche egcs ha problemi (meno, pero').
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

> invece il compilatore kai compila senza errori tutto quanto:
Kai? il compilatore portento che costa un bordello di soldi????
Ci dici qualcosa di più se è quello?
Newsgroup: it.comp.lang.c++
Titolo: DLL e puntatori restituiti

Ho un problema con una semplice DLL che contiene
un'unica funzione che alloca un buffer e ne
restituisce un puntatore.
DLLEXPORT char* allocBuffer (int sz) {
    char *ch;
    ch = new char [sz]; *ch = 0;
    return ch;
}
Quando cerco di disallocare dal chiamante il
buffer, il debugger mi segnala che nella delete
non e' soddisfatta la assert _pFirstBlock == pHead
void main () {
    char *ch;
    ch = allocBuffer (1000);
    // ...
    delete ch; // <- errore?
}
Lo stesso problema si verifica anche con le
malloc e free del C.
L'unica cosa che mi viene in mente e' che
l'applicazione e la DLL inizializzano istanze
diverse del runtime C++ ciascuna delle quali non
puo' trattare gli oggetti allocati da un'altra
istanza. Non a caso utilizzando GlobalAlloc e
GlobalFree non ho alcun problema.
Ora, visto che voglio evitare il piu' possibile
di utilizzare funzioni specifiche del sistema
operativo, come faccio a utilizzare lo stesso
runtime C++ nella DLL e nell'applicazione?
Grazie
P.S. Ma secondo voi e' lecito disallocare con la
free del C un buffer creato con la new del C++?
Sent via Deja.com 
http://www.deja.com/
Share what you know. Learn what you don't.

 free del C un buffer creato con la new del C++?
No.
EMG


__________________________________________________________
Daniele Baggio
ITC/irst, Istituto per la Ricerca Scientifica e Tecnologica     
Loc. Pante' di Povo  I-38050 Trento  ITALY            
Tel: (+39) 0461-314-596 
e-mail: 
bag...@irst.itc.it
__________________________________________________________

chiamato Java...
Mi pare un po' troppo estrema come affermazione...
Il run-time (o meglio supporto a run time) e`
l'insieme delle funzionalita` che implementano i vari
costrutti di un linguaggio (gli operatori aritmetici per fare un esempio).
Anche il codice di start-up lo possiamo benissimo considerare
come parte del run-time, cosi` come il meccanismo di late binding
alla base delle funzioni virtual...
Il fatto che il linguaggio sia compilato o interpretato e` una
questione del tutto ortogonale.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------
Newsgroup: it.comp.lang.c++
Titolo: Aiutatemi entro domani per favore!!!

Sto facendo un compito per l'università;
nel programma C++ che devo fare, dopo una chiamata di getch();
ho una chiamata di   cin.getline(buffer, 128);
ma quando il programma si ferma in attesa di input mi ritrovo compe primo
carattere
digitato sullo schermo l'ultimo preso da getch();
Mi sapete dire come eliminarlo?
Ecco la parte del codice interessata;
da main() lancia menu() che visualizza una serie di opzioni.
Scegliendo la 4  richiama una funzione che chiede un getline;
a questo punto mi ritrovo nel prompt un "4".
La compilazione viene fatta col C++ Builder in modalità ConsoleApp
Mi sapete aiutare?
// ---------------------------------------------------
int main(void)
{
    // Altra roba....
   menu();
    // Altra roba...
   return 0;
}
void menu(void)
{
   int c;
   do
   {
     clrscr();
   // Visualizzazione menu
    // altre opzioni
     cout << "  Inserisci informazioni nell' Albero:            [4] " <<
endl;
    // altre opzioni
     c = toupper(getch());
     switch (c)
     {
        // Altra roba
       case '4':   InsertInTree();     break;
        // altra roba
     }
   }
   while(c != 0x1b);   //Codice del tasto di Escape
}
void InsertInTree(void)
{
   char Buff[128];
   clrscr();
   if(!RadiceAlbero)       // Se non esiste l'albero lo crea
   {
     cout << "Creazione nuovo Albero:" << endl;
     cout << "Inserire l'informazione per la radice:" << endl;
     cin.getline( Buff, 128);
     RadiceAlbero = InserisciPrimoLibero( Buff, Head, Bottom);
     cout << endl;
   }
// Altra roba
  return;
}

 Mi sapete dire come eliminarlo?
Probabilmente è troppo tardi comunque dovrebbe bastare pulire il buffer
della tastiera dopo la getch con una istruzione tipo:
fflush(stdin)
 

 fflush(stdin)
In C e' undefined behaviour.  Mi stupirebbe che in C++ fosse differente...
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

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

Vorrei sapere il titolo del libro e la casa editrice, possibilmente anche il
nome completo dell'autore.
Grazie anticipatamente.

 ha scritto nel messaggio
news:LX0L8.988$86.1...@twister1.libero.it...


 ha scritto nel messaggio
news:LX0L8.988$86.1...@twister1.libero.it...

Newsgroup: it.comp.lang.c++
Titolo: Un paio di domande su eredita', metodi virtuali ...

Salve a tutti,
diciamo che ho questa classe base con una sua derivata:
class XbpPktBase {
public:
	XbpPktBase() {};
	virtual string toString() = 0;
};
class XbpPktModemStatus : public XbpPktBase {
public:
	explicit XbpPktModemStatus(const vector<int> & bytestream);
	virtual string toString();
private:
	int cmdData;
};
Domande:
1. per XbpPktBase dovrei dichiarare il distruttore virtuale, corretto?
Cioe' aggiungere
    virtual ~XbpPktBase() {};
2. ma poi non c'e' bisogno di dichiarare il distruttore virtuale anche
per la classe derivata, il distruttore di default andra' benissimo
cosi' com'e', giusto?
3. e riguardo i copy constructor & assignment operator? E' la stessa
cosa?
Thx,
Pleg

 Pleg
Ciao,
Matteo

Thx!
Per ricapitolare: il distruttore della classe base lo dichiaro
virtuale (cosi' magari mi ricordo di farlo anche la prossima volta,
dove magari sara' critico :).
Per le classi derivate (che sono tutte di quel tipo, con nel private:
qualche int, stringa, vettore) non dichiaro ne' distruttore ne' copy
constructor ne' assignment operator, che quelli di default vanno bene
(e quello che serve sara' automaticamente virtuale), giusto?
Pleg


"Regola del pollice":
1. Al primo metodo virtuale discendendo in una gerarchia di classi,
anche il distruttore va posto virtuale a scanso di problemi.
2. Se la classe base non deve essere istanziabile, il distruttore
oltre che virtuale è bene metterlo astratto.
3. I membri dati sono quasi sempre nella sezione private di una
classe, più raramente nella sezione protected. Si usano degli
accessori per raggiungerli pubblicamente quando serve. Qualcuno mette
*sempre* i membri dati come privati, e usa gli accessori anche nella
sezione protetta per esporli a classi protette. Non è un'idea
sbagliata.
4. Per le classi derivate, se i costruttori ricevono parametri
particolari quello di default non va più bene. Ci sono anche casi in
cui ogni oggetto è diverso dal precedente (per esempio, per contenere
un ID univoco, o la data di istanziazione in un membro dati, etc.), e
pertanto è necessario definire anche per le classi derivate
costruttori, costruttori di copia ed eventuali distruttori.
5. Se si definisce il costruttore di copia, con ogni probabilità
servirà anche l'operatore di assegnamento.
6. Nei costruttori, prediligere le liste di inizializzazione ad una
inizializzazione procedurale nel corpo degli stessi ogniqualvolta
possibile.
7. Se si alloca memoria in un costruttore, va liberata nel
distruttore. Prediligere tuttavia std::auto_ptr<T> come membro dato
qualora possibile (occhio a leggere bene la documentazione).
8. Rendi sempre "const" quei metodi che non modificano i membri dati
di una classe.
9. Rendi (quasi) sempre statici i metodi che non hanno bisogno di
accedere a membri dati di una classe.
PS. con C++0x, quando mai uscirà, c'è una sintassi "di cortesia" per
rendere esplicito il fatto che costruttori o distruttore o
assegnamento debbono essere sintetizzati dal compilatore.
Ciao,
Matteo

Grazie!
Ora mi ci vorra' un po' per digerirlo... :)
Pleg
Newsgroup: it.comp.lang.c++
Titolo: help per CArray

> 
http://www.geocities.com/sunsetstrip/stage/7787
 <<
<<<<<<<<<<<< 
DucaCr...@iol.it
 >>>>>>>>>>>>>>
***** So I open my door to my enemies
***** And ask could we wipe the slate clean
***** But they tell me to please go fuck myself
***** You know you just can't win
                                        (David Gilmour)

 Pippo.
Mi sembra tutto corretto.
EMG

Newsgroup: it.comp.lang.c++
Titolo: urgenteeee cerco Borland Turbo c++ 1.0 o successivo

Salve.....ho cercato tanto nella rete ma senza nessun frutto!
Mi serve assolutamente il Borland Turbo C++ 1.0 O massimo 2.0 ....mi sembra
che sia comprensivo di
compilatore e debugger! Da dove posso scaricarlo???
Siete la mia ultima speranza..... Non mi abbandonate!
--
**!People think I'm insane because I am frowning all the time!**


Ciao!
Puoi trovare la versione di Turbo C++ 1.0 (con IDE e debugger) all'
URL:
http://www.elet.polimi.it/Users/DEI/Staff/Enrico.Ronzoni/labinfo1/down
load.html
Bye
C.
Newsgroup: it.comp.lang.c++
Titolo: Miglio compilatore C++ x DOS

Salve a tutti,
vorrei chiderVi qual'è il migliore (e per quali motivi secondo voi)
compilatore c++ per DOS.
(indicare marca e versione).
Indicare anche se è aggiornato a tutte le ultime caratteristiche.
Grazie a tutti,
---------------------------------
Matteo Facchini                    
Alfonsine  (Ravenna)
PER FAVORE NO ATTACHMENT PLEASE                          

...


 PER FAVORE NO ATTACHMENT PLEASE
--
Flavio Poletti
email: 
pol...@writeme.com
La libertà è lì, alla portata di tutti, come la chitarra...
 ... ognuno suona come vuole, e tutti suonano come vuole la libertà...

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

Scusate l'ignoranza, non so se questo sia il NG giusto,
pero' avrei un problema urgente, e volevo sapere se
qualcuno mi puo' aiutare o almeno indicarmi dove cercare:
Allora il mio problema e' avere un algoritmo che assegni
le ore di insegnamento di  N scuole ad M docenti, in
base a diversi criteri, come la graduatoria, i titoli, la
distanza, l'anzianita', ecc. Io sono riuscito a fare qualcosa
pero' non soddisfa pienamente le aspettative che mi ero
posto (cioe' l'algoritmo non funzia tanto bene), come
aver il minor numero di docenti per scuola con il massimo
numero di ore assegnate.
Spero di non aver disturbato,  e ringrazio tutti in anticipo.
Giuseppe
gge...@numera.it

Posta su it.scienza.informatica
Troverai sicuramente qualche risposta.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

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

Buon Natale a tutti i frequentatori di it.comp.lang.c++!
Dome

Buon Natale a tutti i frequentatori di it.comp.lang.c++!
Grazie! Buon Natale a Tutti!  :)
-- 
_____________________
RedPelle
--==--==--==--==--==--==--
 
redp...@email.it
 
www.redpelle.cjb.net
--==--==--==--==--==--==--

Buon Natale
Francesco
Newsgroup: it.comp.lang.c++
Titolo: OLE e COM

Salve ragazzi,
leggendo alcuni tutorial sulle DirectDraw, sono venuto a conoscenza del
bisogno di programmare, almeno una volta, tramite le OLE e le COM.
Vista la mia ignoranza a riguardo, volevo sapere se ci sono dei tutorial da
qualche parte o mi consigliate qualche libro (se e' possibile della Apogeo
visto che ho lo sconto ;)  ) a riguardo... magari, magari che sia anche un
buon libro di C++/Visual C++ visto che, causa univesita', ho dimenticato le
nozioni fondamentali quali puntatori, classi, funzioni etc :((
Grazie anticipatamente e spero che rispondiate in tanti :-)
ciao
NighTiger
NB
Io lavoro con Visual Studio 6

 nozioni fondamentali quali puntatori, classi, funzioni etc :((
Per questi, l'ideale sarebbe Lippman e Lajoie, "C++ Corso di
Programmazione", Addison-Wesley Italia: nulla su estensioni
non-standard al C++, ma tutto sul C++ Standard stesso.
Alex

 NighTiger
In realta' per utilizzare DirectX non e' assolutamente necessario 
conoscere estensivamente OLE e COM; tutto quello che e' necessario 
sapere riguardo queste tecnologie viene presentato e spiegato in una 
sezione dedicata della guida di DirectX fornita insieme all'SDK
Se invece il tuo obiettivo e' programmare OLE e COM, allora il discorso 
e' diverso
lUDo

 NighTiger
Non è che hai letto i tut. di DSound e DMusic?
ciao

 Non è che hai letto i tut. di DSound e DMusic?
no :)

 no :)
Il fatto è che com in DDraw è automatico. L'unica funzione che dovrebbe
utilizzare com
(IDirectDrawSurface7::Initialize()) ritorna sempre
DDERR_ALREADYCREATED essendo che è già inizializzato.
ciao
Newsgroup: it.comp.lang.c++
Titolo: [AIUTO] Double buffering in applicazione MFC SDI in VisualC++

Sto realizzando un cad in visualC++ x motivi universitari, ma mi trovo
davanti a un ostacolo probabilmente stupido, ma da cui non resco a
sbloccarmi.
Data la quantità di primitive da ridisegnare sull'area View
dell'applicazione ho deciso di usare (allo stesso modo di quando programmo
con OpenGL) un algoritmo di Double buffering.
Il problema nasce proprio da qui... Ho letto la documentazione e credo di
aver inserito correttamente tutto, ma quello che ottengo è semplicemente
l'area client vuota (senza DB funziona correttamente).
In particolare ho riscritto il metodo OnDraw() della classe CView in questa
maniera (ovviamente scrivo solo le parti relative al Double buffering)
void CMiaClasseView::OnDraw(CDC * pDC)
{
    CRect rect;  // rettangolo della finestra da ridisegnare
    GetClientRect(&rect);  // estraggo il rettangolo
    CDC pDC2;  // creo il DC che fa da buffer
    pDC2.CreateCompatibleDC(pDC);    // creo il DC compatibile
        //////////  Ora uso le funzioni della GDI per disegnare sul Device
Context pDC2
   pDC->BitBlt(r.left, r.top, r.right-r.left, r.bottom-r.top,
&pDC2,0,0,SCRCOPY);  // con qsto metodo dovrei copiare l'immagine nel buffer
nel device context corrente
}
Il problema è che in questa maniera tutto ciò che ottengo è l'area client
bianca senza reazioni...
Qualcuno può darmi una dritta?
Grazie... ciao
Fabio

 buffer nel device context corrente
Se ricordo ancora qualcosa delle MFC credo ci dovrebbe essere un metodo
End, Flush, Finish, EndPaint o qualcosa del genere nella classe CDC.
Dovresti chiamarlo prima di fare la BitBlt.
PS: Sei OT. Per i messaggi che riguardano le API Win32 o MFC, spostati
su news://it.comp.programmare.win32. Questo ng è solo per le
discussioni sul C++ standard.
-- 
Andrea Bergia - studente              Linux Registred User #281550
"The one thing we're all waiting for, is peace on Earth and an end to
war,
it's a miracle we need, the miracle, the miracle, 
Peace on earth and end to war today,
That time will come one day you'll see when we can all be friends"
Newsgroup: it.comp.lang.c++
Titolo: Aiuto con compilazione

Ciao, sto cercando di compilare un codice di terzi e ad un certo punto
ottengo questo errore:
[ 49%] Building CXX object
c++/varling_caller/CMakeFiles/casava_varling_caller.dir/varling_caller_r
un.cpp.o
In file included from
/opt/Illumina/CASAVA_v1.6.0/c++/varling_caller/pos_processor.hh:22,
                 from
/opt/Illumina/CASAVA_v1.6.0/c++/varling_caller/indel_read_util.hh:19,
                 from
/opt/Illumina/CASAVA_v1.6.0/c++/varling_caller/varling_caller_run.cpp:20
:
/opt/Illumina/CASAVA_v1.6.0/c++/blt_util/stream_stat.hh:49: error:
function definition does not declare parameters
make[2]: ***
[c++/varling_caller/CMakeFiles/casava_varling_caller.dir/varling_caller_
run.cpp.o] Error 1
make[1]: ***
[c++/varling_caller/CMakeFiles/casava_varling_caller.dir/all] Error 2
make: *** [all] Error 2
Vado a vedere l'header incriminato e ci trovo questa struct
struct stream_stat {
    // Accumulate mean and standard dev using a single pass formula
    // Uses the cancellation-friendly formulae on p.26 of
    // Higham, Accuracy & Stability of Numerical Algorithms
    // Variable names follow his
    stream_stat() : M_(0),Q_(0),max_(0),min_(0),k_(0) {}
    void update (const double x) {
        k_++;
        if(k_==1 or x>max_) max_=x;
        if(k_==1 or x<min_) min_=x;
        // important to do M before Q as Q uses previous iterate of M
        const double delta(x-M_);
        M_+=delta/static_cast<double>(k_);
        Q_+=delta*(x-M_);
    }
    int sample_size() const { return k_; }
    double min() const { return ((k_<1) ? nan() : min_); }
    double max() const { return ((k_<1) ? nan() : max_); }
    double mean() const { return ((k_<1) ? nan() : M_); }
    double variance() const { return ((k_<2) ? nan() :
Q_/(static_cast<double>(k_-1))); }
    double sd() const { return std::sqrt(variance()); }
    double stderr() const { return
sd()/std::sqrt(static_cast<double>(k_)); }
private:
    static
    double nan() { double a(0.); return 0./a; }  // 'a' supresses
compiler warnings
    double M_;
    double Q_;
    double max_;
    double min_;
    unsigned k_;
};
la linea 49 e' questa:
    double stderr() const { return
sd()/std::sqrt(static_cast<double>(k_)); }
come la risolvo questa cosa?
grazie
d

 sd()/std::sqrt(static_cast<double>(k_)); }
Penso che il problema sia dovuto al fatto che il simbolo "stderr" e' 
gia' definito globalmente dall'include "stdio.h".
Le soluzioni che mi sovvengono sono:
- Evita di includere "stdio.h" direttamente o indirettamente.
- Scrivi la direttiva "#undef stderr" prima della dichiarazione di 
"double stderr()". Non necessariamente appena prima; va bene anche 
all'inizio del file header.
- Sostituisci "stderr" con "std_err" o qualche altro nome di tuo 
gradimento, ma che non sia gia' utilizzato.
-- 
Carlo Milanesi
http://digilander.libero.it/carlmila

 wrote:

Grazie... avevo sospettato qualcosa di simile... sostituito con std_err
e futto funziona. Ora mi chiedo perche' questo errore su OpenSolaris e
non su linux?
d
Newsgroup: it.comp.lang.c++
Titolo: Un buon Manuale C++?

Scusate, sapete consigliarmi un buon manuale di C++ ?
Ho già Thinking in C++, ma vorrei qualcosa di più chiaro, magari con più
esempi ed in Italiano
Grazie

 wrote in message
8gc1n3$qoc$1...@serv1.albacom.net...


 wrote in message
8gs3i8$b7f$1...@nslave2.tin.it...


Newsgroup: it.comp.lang.c++
Titolo: impararare c++ builder

vorrei consiglio su un buon libro sulla programmazione avanzata con c++
builder (da 4.0 in su).
grazie a tutti

builder (da 4.0 in su).
Borland C++Builder 4 Unleashed di Kent Reisdorph e altri, disponibile sono
in inglese.
www.borland.com/bcppbuilder
 due libroni online GRATUITI sulla versione 5, in
tutte le salse (standard, pro e enterprise).
Ciao e buona lettura!
--
Stefano Tempesta
ste...@tempesta.org

Newsgroup: it.comp.lang.c++
Titolo: [semi-ot] visual c++

Quando lancio un programma mi compare la finestra del prompt (devo stampare
delle semplici printf). Ma la finestra del prompt, a stampa effettuata, si
chiude senza permettermi di leggere cosa ha effettivamente stampato. E'
possibile farla restare aperta?

puoi utilizzare il classico "Premere un tasto per continuare" con
system("pause");
oppure premete Invio quando finisce tutto con
std::cin.get();
ciao,
Filippo
http://www.elementer.net
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


 Grazie ma volevo sapere se c'era un'impostazione proprietaria di Visaul
C++, nelle preferenze...

 std::cin.get();
è lo stesso
char wait;
cin>>wait;
????

 C++, nelle preferenze...
mi pare di no ...
ciao,
Filippo


 ????
se ti serve semplicemente per frenare la chiusura dei tuoi esercizi, qualora
stessi studiando e provando del codice, allora si .... puoi utilizzare
quello che ti pare per non far chiudere la finestra ...


Newsgroup: it.comp.lang.c++
Titolo: [vector] aggiornamento di "size()" dopo accesso con []

Ciao a tutti,
"inizializzo" un vettore tramite reserve(N) e poi accedo
solo tramite l'operatore indice [] sempre restando tra 0 e
(N-1). Quando vado a chiamare size() mi restituisce sempre
zero, come se la dimensione venisse modificata unicamente
tramite push_back() o altro ma sicuramente non da [].
E' normale e documentato questo comportamento? Se come
temo si tratta di un mio cattivo uso, come potrei ottenere
il risultato voluto?
grazie!
Apx.
-- 
"Ricordo la volta che mi hanno rapito: hanno mandato
un pezzo del mio dito a mio padre. Lui ha risposto
che voleva un'altra prova."

 il risultato voluto?
Devi usare resize(N), non reserve(N). Reserve serve per fare una 
preallocazione della memoria, ma non aumenta la dimensione logica 
dell'array.
E.

 la dimensione logica dell'array.
grazie! Effettivamente ha funto :)
ciao!

Newsgroup: it.comp.lang.c++
Titolo: Compilazione Con G++

Ciao a Tutti,
Ho un programma scritto in c (con più sorgenti .c e .h)per un compilatore
Unix (gcc) ma questo programma mi serve per realizzare un' applicazione per
window95.
Vorrei quindi sapere se è possibile compilare i sorgenti con gcc
 per poi utilizzarlo sotto win95.
se c'è qualcuno che mi sa dire come fare o è disposto a farmelo è supplicato
di contattarmi direttamente alla mia Mail
E-mail   
fabio...@replica.it
grazie. Ciao

di contattarmi direttamente alla mia Mail
Su base del tutto eccezionale ho fatto un "replica all'autore
oltre che al gruppo", ma ci spieghi perché vuoi le repliche
solo in mail...?!  Leggendo una replica sul gruppo, qualcun
altro puó notare qualche errore, correggerlo, estenderlo,
esprimere un altro parere, insomma tutta una serie di cose
positive che ti aiutano ad avere risposte piú esaurienti,
complete, e corrette.  Normalmente i post con richiesta di
risposta in mail privata io li salto a pié pari, ma vorrei capire
la motivazione psicologica di chi li fa...
Alex

Newsgroup: it.comp.lang.c++
Titolo: Help su Borland C++ 3

Ciao, ho qualche problema a capire come questo compilatore gestisce i vari
file e in particolare:
    DOV'E' IL MAIN?
O meglio, in che file devo scrivere le istanze delle mie classi ?
Nel file principale ".cpp" (quello con il nome del progetto per intenderci)
c'è questa sequenza di istruzioni:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
        Application->Initialize();
        Application->CreateForm(__classid(TFormInterfaccia),
&FormInterfaccia);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
    return 0;
}
Ma a quale Application fa riferimento??
Ringrazio anticipatamente tutti quelli che mi aiuteranno :-)
Ciao,Marco

 
Application è l'istanza di una classe TApplication creata
automaticamente dal compilatore. Tranne che in casi molto particolari
non dovresti averci a che fare.
Il file che riporti è effettivamente il modulo principale del programma,
e anche in questo non dovresti mai metterci le mani, poiché l'ambiente
fa tutto per te.
Se devi definire nuove classi fallo in dei nuovi moduli che dovrai
provvedere a creare (attraverso il menu File|New) così come si fa in
genere.
Il modulo contenente Form1 invece deve essere riempito con
l'implementazione della finestra principale dell'applicazione, e
possibilmente solo con i dettagli relativi alla GUI. Piazza tutta la
logica del programma in moduli separati, o alternativamente in
DataModules (che ti danno la possibilità di utilizzare TComponents al
design-time).

Newsgroup: it.comp.lang.c++
Titolo: HELP Active X con VC++

Non riesco a far funzionare un controllo Active X all'interno un form VB6.
Non imposta le proprietą del controllo !!!
Qualche anima gentile ha un esempio di controllo da cricare in VC++ per
capire dove ho sbagliato ?
Grazie in anticipo.
marco....@tin.it

Chiedi su it.comp.programmare.win32 . Qui trattiamo di C++ standard e
non di tecnologie proprietarie.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: Esiste la versione trial del c++builder 5.0????

come da oggetto
Newsgroup: it.comp.lang.c++
Titolo: Definire classe astratta

ciao a tutti,
vorrei sapere che significa questa frase...
"definire una classe astratta che rappresenta l'interfaccia XXX"
devo definire solo i metodi virtuali dell'interfaccia? e se si, allora a che serve? 
la classe come č fatta?
spero mi possiate aiutare
grazie
ciao

 che serve? la classe come è fatta?
Nel C++ una classe astratta è una qualsiasi classe in cui vi sia almeno un
metodo virtuale puro (privo di implementazione).
Tale tipologia di classi modella l'interfaccia delle classi figlie (classi
concrete) che avranno la responsabilità di implementare i metofi virtuali
puri (per non essere a loro volta astratte).
Una classe astratta chiaramente non può essere istanziata.
Il concetto di interfaccia nel C++ non è esplicito come in altri linguaggi
(vedi Java). L'interfaccia è un classificatore che modella una serie di 
metodi. Le classi che vogliono essere sostituibili con il tipo specificato
da un'interfaccia devono implentarne tutti i metodi.
Nel C++ si può costruire un'interfaccia dichiarando una classe astratta che
contenga tutti metodi virtuali puri.
Spero di essere stato chiaro.
-- 
Domenico Testa - Studente

> Spero di essere stato chiaro.
grazie domenico...sei stato chiarissimo ;)
ciao
Sandro

Spero di essere stato chiaro.
scusa la mia ingnoranza in materia ma non ho ancora capito a cosa
serve una classe che non può essere istanziata

 serve una classe che non può essere istanziata
Serve a modellare una gerarchia di classi.
Ad esempio, in un fantomatico quanto improbabile software ludico, potresti
creare una gerarchia del tipo:
       +---------------------+
       |Item                 |         <-------- Astratta
       +---------------------+
       |virtual void pick()=0|
       +---------------------+
                  |
                  |
           <------------->
           |             | 
     +-----------+   +-----------+
     |Bonus      |   |Mina       |
     +-----------+   +-----------+
     |void pick()|   |void pick()|
     +-----------+   +-----------+
In alcune parti del tuo codice vorrai utilizzare oggetti di tipo Item
indipendentemente dal fatto che siano mine o bounus, per il semplice fatto
che devono essere pick()ate.
Chiaramente il meccanismo del polimorfismo richiamerà la giusta versione di
pick() per l'Item utilizzato.
Ad esempio, nel codice del personaggio del gioco, potresti creare un metodo:
    void raccogli(Item& i) {
       i.pick();
       //...
    }
che funzionerà con qualsiasi sottoclasse di Item: nel caso dei Bonus magari
guadagnerai dei punti, mentre nel caso delle mine salterai in aria ;-).
Cerca su un qualsiasi testo di OOP i capitoli relativi all'ereditarietà ed
al polimorfismo.


al polimorfismo.
grazie 1000
comincio a capire qualcosa.
Newsgroup: it.comp.lang.c++
Titolo: DA DOVE INIZIARE?

Ciao. Vorrei poter imparare il linguaggio C++. Che libro/i mi consigliate ?

 Ciao. Vorrei poter imparare il linguaggio C++. Che libro/i mi consigliate
Ma non c'è nella FAQ?
Cmq.
Autori: Stanley B. Lippman e Josée Lajoie
Titolo: C++ Corso di programmazione terza edizione
Editore: Addison & Wesley
su 
www.addison.it
 lo trovi.... fai la ricerca per autore e cerca Lippman 
(che è l'autore principale)
Ciao
-- 
Luigi
--
bug windows [5] = {"95", "98", "NT", "Me", "2000"};

Newsgroup: it.comp.lang.c++
Titolo: Deleteobject (X ALEX MARTELLI)

Grazie, per la risposta al mio quesito su deleteobject etc.etc.
era come se volevo sedermi dopo aver tolto la sedia, mi ero
bevuto il cervello a causa dell'ora tarda nella quale lavoravo.
grazie comunque

...

Prego!  'Ste cose succedono a tutti noi, soprattutto in
ambienti complessi/intricati come Windows -- a volte
ci si "accanisce" in una certa direzione di sviluppo,
e non se ne viene a capo, ma non si sa mai se e`
perche` uno si e` scordato una banale "virgola" da
qualche parte, oppure perche` c'e` proprio una falla
di fondo nell'impostazione dello sviluppo stesso...
Alex

Newsgroup: it.comp.lang.c++
Titolo: consigliatemi un manuale...

Ciao a tutti,
vorrei un consiglio su che testo acquistare per poter programmare in
Visual C++, soprattutto per quanto riguarda aspetti di MMI
(interfaccia utente, finestre ecc.)...
ho gia' avuto esperienze di programmazione in questo linguaggio (ANSI
C++) in ambienti Unix (Solaris e Digital) quindi non sono nuovo al
linguaggio vero e proprio.
Grazie

 ha scritto nel messaggio
news:d96fdfb7.02082...@posting.google.com...

Il testo che sto usando io in questo momento e mi sembra molto valido è
"Programmare WINDOWS" di Charles Petzold, sappi però che riguarda le API di
Windows, e non tratta le MFC, penso che però per iniziare sia veramente
buono! C'è anche un tutorial molto buono di Alex Martelli 
http://www.alex.it
!
Ciao
Francesco

>Programmare WINDOWS
Di questo libro (e di un altro riguardante le MFC e le VCL)  puoi trovarne
una e-copia in inglese su 
www.crackinguniversity2000.it
.

 una e-copia in inglese su 
www.crackinguniversity2000.it
.
Pensa che cretino che sono io che ho speso 115k lire per comprarlo in
libreria!

 ha scritto nel messaggio
news:9f0b9.83213$C8.1...@tornado.fastwebnet.it...


 writes:

Sei solo una persona onesta.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it