mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Linguaggio C++

            Salve,
devo sostenere un esame sul C++, ma proprio non riesco a trovare il
linguaggio di programmazione.
Come posso fare? Dove devo "cercare"? E' chiaro, a scanso di equivcoci, che
per fare un esame non ho intenzione di comprarlo... quindi?
Grazie per gli eventuali suggerimenti... se volete farli in pvt:
sps...@yahoo.com

per fare un esame non ho intenzione di comprarlo... quindi?
???
Il C++ è un linguaggio di programmazione che non trovi da nessuna
parte (a meno che ti riferisci allo standard ma non penso proprio).
Probabilmente tu ti riferisci al compilatore, ver?
Se è così forse ti conviene usare quello che usate a scuola (sperando
che non sia il Turbo C++) oppure puoi scaricarti il gcc.
Se vuoi il gcc per windows (come penso visto che usi OE per le news)
prova a scaricarti Dev-C++ (
www.bloodshed.net
).
-- 
Marco Barisione (ICQ 84277092)

Alessandro <Si...@Softhome.net> wrote in message
KMTy7.834$V75....@news1.tin.it...


 Marco Barisione (ICQ 84277092)
Grazie, grazie, grazie... insomma, grazie.
Ho scaricato il Dev-C++ come da te indicatomi e funziona tutto a
meraviglia... grazie a te!
Ho giŕ ordinato una stringa (ohhhhhhhhh! ma che bravo!). Ciao, ciao.

Newsgroup: it.comp.lang.c++
Titolo: [OT]Gestione degli archivi(scusate!)

Scusate per l'ot ma non so proprio a che ng rivolgermi!!
Anzi se me ne  consigliate uno adatto ve ne sarei grato(ancora di più però
se mi rispondeste:-))
Sto studiando i vari metodi  di accesso casuale ai singoli record logici di
un archivio, e mi interesserebbe capire il funzionamento del metodo a
blocchi(hash), e in cosa diverga rispetto ad esempio ai metodi di accesso
diretto e tabellare, e quali vantaggi presenti rispetto a questi ultimi.
Potete darmi una mano?
Scusate ancora per il clamoroso OT!!

Proprio nessuno puņ aiutarmi? :-((((

 Proprio nessuno puņ aiutarmi? :-((((
it.comp.programmare
-- 
Luc.

Newsgroup: it.comp.lang.c++
Titolo: Un paio di problemi...

Ciao a tutti...
ho 2 problemi che non so se si possano definire tali:
1) vorrei riuscire a disabilitare completamente alcuni tasti della tastiera
(ex il tasto ALT) durante l'esecuzione del mio codice; esiste qualcosa tra
le API di windows?
2) e' possibile far sparire totalmente la barra di Windows (quella con il
tasto start per intenderci)?
Grazie a chiunque abbia 2 minuti da dedicarmi.
Max

le API di windows?
it.comp.programmare.win32

 wrote in message
39052b5c...@news.libero.it...


 wrote:

--
DGP85
Se vuoi ricevere informazioni su come guadagnare con
Internet, scrivimi a 
di...@cdfreaks.zzn.com
 o visita
il mio sito all'indirizzo 
http://dgp85.spedia.net/
Newsgroup: it.comp.lang.c++
Titolo: problemi con compilatore Dev-C++

Salve,
sto iniziando ad imparare C, uso il compilatore Dev-C++ 3.99.
Il mio problema č che dopo aver compilato quando avvio l' exe si richiude
subito e non riesco a vedere il risultato del mio programma. Che posso fare?
Grazie in anticipo
Leo

 wrote in message
news:zhkH9.34699$qF1.1...@news2.tin.it...

Perche' intasare 3 (o piu') newsgroup??? ne bastava uno solo.... la proxima
volta non ti rispondo :)
--
Napolux
http://ifsk.too.it
http://napolux.supereva.it

 ha scritto nel messaggio
news:asklnl$4bj$2...@pluto.sm.dsi.unimi.it...

Hai ragione...
Comunque grazie per la risposta, ora provo subito a fare come mi hai
suggerito.
Leo

 subito e non riesco a vedere il risultato del mio programma. Che posso
fare?
#include <stdlib.h>
int main(){
  system ("pause");     // execute MS-DOS' pause command
  return 0;
}
Fondamentalmente ti interessa il system ("pause") e la libreria.
oppure, ma non lo ho mai provato:
#include <stdio.h>
int main(){
  printf ("Press ENTER to continue.\n");
  getchar ();     // wait for input
  return 0;
}

 ha scritto nel messaggio
news:jAsH9.38420$qF1.1...@news2.tin.it...

Ho fatto come dici ma ancora non mi viene... Non dipenderą dalla versione
del compilatore (3.99)?

 del compilatore (3.99)?
Non saprei, io ho provato solo l'ultima versione e funziona, il brutto è che
dopo che hai eseguito il programma non puoi rieseguirlo o eseguirne un altro
nella stessa finestra (ad esempio per controllare al volo i due risultati,
se esiste un modo, fatemelo sapere!!
Grazie.

 se esiste un modo, fatemelo sapere!!
Apri una finestra dos e lancia il tuo programma da riga di comando.
Ciao,
Nicola
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c++
Titolo: Dove trovo informazioni su jpg ?

Cerco informazioni sui file in formato JPEG e sugli algoritmi di
compressione e decompressione usati.
Grazie in anticipo per le informazioni

compressione e decompressione usati.
http://www.wotsit.org
 é il sito migliore per tutto
quel che riguarda i formati di file, in generale (in
questo caso immagino che ci troverai anche dei
puntatori ai sofisticati algoritmi di compressione
usati).
Alex

http:://
www.wotsit.org
Stefano.

 compressione e decompressione usati.
 
http://www.dcs.ed.ac.uk/~mxr/gfx/
Newsgroup: it.comp.lang.c++
Titolo: Macro e types

Dunque... Lo so che le macro sono "male"... Ma per certe cose "ripetitive"
mi va benissimo di usarle (e in questo caso devo fare una cosa un po'
strana, basata pesantemente sull'uso dei puntatori).
Il mio problema è che, data una variabile v1 di tipo t1, voglio convertire
una variabile v2 (di tipo char *) nel tipo t1, qualcosa del tipo:
obj v1;
obj1 *v2conv;
char *v2;
v2conv = static_cast<v2conv*>(v2);
Chiaramente questo deve avvenire all'interno di una macro che non sa cosa
sia un obj (per questo nello "static cast" al posto del tipo ho messo una
variabile di quel tipo). Questo perchè poi la macro richiama una funzione
overloadata in tanti "gusti"... a seconda di che tipo di variabile la
richiama.
Per ora, per risolvere, ho fatto questo:
template <class T>
T* conv(T* type, char *var)
{
    type;
    return (T*)var;
}
Vorrei sapere se esiste un comando/un metodo in C++ che faccia ciò (se no mi
tengo la mia funzione-template che tanto, con un po' di fortuna,
l'ottimizzatore la fa sparire e trasforma il tutto in un semplice type-cast)
--- bye

> Dunque... Lo so che le macro sono "male"...
E chi l'ha detto???
 template <typename T>
 T * conv(char * var){
    return (T *)var;
    }
Non vedo altra soluzione, mi spiace.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ma poi, perche' non fai direttamente
 type1 * var1;
 type2 * var2;
 var2 = (type2 *)var1;
???

Newsgroup: it.comp.lang.c++
Titolo: domanda strana

ciao  a tutti ,  ho una funzione in c (che fa parte di una libreria tutta
scritta in c)  che ha come parametro una struct con diversi campi di tipo
intero; ultimamente ho scritto delle nuove classi c++ che completano la mia
libreria  e che si appoggiano su quella in c  ma è nato il seguente problema
la struct è diventata una struct c++( i campi della struct c++ che coincido
con i campi della struttura c ) con operatori e costruttore e poichè non
voglio riscrivere la libreria in c vorrei sapere se è possibile in qualche
modo (overloading del cast per esempio)  di passare la struct c++ alla
funzione c che riceve come parametro la struct c (sono solo interessato ai
campi della struct c++).
grazie
P.S. spero di essere stato chiaro...e di non avere fatto casino come al
solito
P.S.S. sono un neofita del c++ quindi non date niente per scontato e se è
possibile fattemi un piccolo esempietto con due righe di codice
grazie
Linus

 campi della struct c++).
Credo che se tu non hai inserito metodi virtuali nella struttura, la 
versione C++ e quella C sono ancora interscambiabili tranquillamente, in 
quanto la loro rappresentazione interna dovrebbe essere ancora come quella 
in C.
Cmq, per ovviare, io farei così:
        struct PippoStruct { ... };
        class PippoClass {
        public:
                ...
                PippoStruct operator PippoStruct( ) {
                        PippoStruct rv;
                        rv.field1 = field1_;
                        rv.field2 = field2_;
                        ...
                        return rv;
                }
                ...
        private:
                int field1_;
                int field2_;
                ...
        };
In questo caso il metodo pubblico "operator PippoStruct" rappresenta 
l'overloading per il casting verso la struct in C. Quindi:
        int funzione( PippoStruct );
 
        ...
        PippoClass a;
        ...
        funzione( a );
        ...
dovrebbe funzionare.
Ciao!
-- 
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.

                         rv.field1 = field1_;
se non sbaglio negli operatori di conversione il tipo di ritorno non si
indica perché č implicito
--
Pela
Newsgroup: it.comp.lang.c++
Titolo: Vettore di numeri complessi?

Cari puristi,
  uso una piccola libreria per avere numeri complessi, un esempio:
CX z = 3.0 + 4.0 * _I_;
dove _I_ è il coeff. immaginario.
  Quale è il modo + semplice di avere un VETTORE di tali oggetti?
Grazie in anticipo,
Gabriel  
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

   Quale è il modo + semplice di avere un VETTORE di tali oggetti?
beh, std::vector<CX> da' problemi?
-- 
si prepara direttamente nel bicchiere basso detto "tumbler basso". Tre o 
quattro cubetti di ghiaccio, aggiungere il gin, il martini rosso, il 
bitter campari e mescolare. Guarnire con una fetta d'arancia.

 beh, std::vector<CX> da' problemi?
No, funziona. Sono basito (anzichenò)!
Gariel


 No, funziona. Sono basito (anzichenň)!
incredibile cosa non si riesca a fare con un std::vector, eh?


 beh, std::vector<CX> da' problemi?
Beh, allora std::vector<std::complex> ?
-- 
Gerolamo 

 incredibile cosa non si riesca a fare con un std::vector, eh?
Direi incredibile cosa si riesca a fare con i template :P
Newsgroup: it.comp.lang.c++
Titolo: [?] - Visualizzazione di una variabile char o string

Salve a tutti
Premetto che sto iniziando ora ad avvicinarmi al c++.
stavo provando il solito programmino di prova (riportato di seguito) quando
mi sono accorto di una cosa: se inserisco ad es. un cognome composto "Del
Neri" e il nome "Marco", il risultato finale che ottengo è "Del Marco".
Questo il codice sotto accusa:
#include<iostream>
void main()
{
    char cognome[50];
    char nome[50];
    cout<<"Inserisci il cognome: ";
    cin>>cognome;
    cout<<"Inserisci il nome: ";
    cin>nome;
    cout<<cognome<<" "<<nome<<endl;
}
P.S. ho provato anche sostituendo i tipi char con: string cognome; e string
nome; ed includendo il #include<string>
Ciao
Fabio

 void main()
Non è un main valido. Scrivi:
    int main( )
Ciao.
Marco Spedaletti

 wrote in message
aqoaj6$6ot$1...@newsreader1.mclink.it...

Ti ringrazio.
Ciao
Fabio

    cout<<"Inserisci il cognome: ";
std::cout.
tutti gli identificatori appartenenti alla libreria standard sono messi
sotto
il namespace std, e se vuoi utilizzarli devi specificarlo. Hai tre modi a
disposizione:
1) specificare di volta in volta. Es:
#include <iostream>
int main() {
    std::cout << "Hello, world" << std::endl;
    return 0;
}
2) utilizzare la direttiva using per indicare che usi un identificatore
preso
da un namespace. Es:
#include <iostream>
using std::cout;
using std::endl;
int main() {
    cout << "Hello, world" << endl;
    return 0;
}
3) utilizzare la direttiva using per importare un intero namespace nel
namespace
globale. es:
#include <iostream>
using namespace std;
int main() {
    cout << "Hello, world" << endl;
    return 0;
}
HTH,
--
Lupin85©
Azzurranet IRC: @#afiad, @#fils, @#pokegalaxy - ICQ: 91528290
Mail: Remove PAN to contact me
- "It is not important what you believe, only that you believe." -

 Questo perché l'operatore di estrazione da stream (>>) č stato scritto in

Ti ringrazio, sei stato molto chiaro.
Ciao
Fabio

 Ti ringrazio, sei stato molto chiaro.
Prego, ma dai un'occhiata alla netiquette, alla voce "quoting".
Ciao,
--
Andrea Spadaccini - Catania (Italy)
Mail: _
lupin85...@libero.it
ICQ#: 91528290
 - It is not important what you believe, only that you believe -
Newsgroup: it.comp.lang.c++
Titolo: eredita e polimorfismo

per la gestione di una biblioteca ho creato una classe lista<tiponodo> in
template essa presenta al suo interno una funzione virtuale pura stampa()
ora io vorrei far derivare tre classi da lista
lista di libri (classe libri gia definita)
lista di riviste
lista tesserati
ora come faccio a creare la classe listadilibri ???
il compilatore mi chiede di scrivere listadilibri<tiponodo> mentre vorrei
listadilibri<libro> o analogo ....
HELLLPPPPPPPPPPPPPPP
Cob



La strada da seguire non e` quella della derivazione e delle funzioni
virtual. La tua classe template non ha bisogno che stampa() sia virtuale
pura, ma solo che stampa() iteri sugli elementi della lista e per
ciascun elemento chiami una funzione membro che esegua la stampa
dell'oggetto:
template<class T>
class Lista {
  public:
   void Stampa() {
    for(/* ciascun elemento*/)
      elemento.Stampa();
   }
/* ... */
};
Questo significa che potrai istanziare il template solo con
classi che possiedono un metodo pubblico Stampa().
Paolo
-- 
------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
 
http://www.cli.di.unipi.it/~marotta
------------------------------------------------
Newsgroup: it.comp.lang.c++
Titolo: Un paio di consigli:

Vi chiedo un paio di consigli: 
1) Non ho ancora esperienze di programmazione in ambiente windows con
c++, quale testo mi consigliate? Considerate che sto cercando un libro
che tratti anche gli archivi ado, ma tutti quelli a cui ho dato una
"rapida occhiata" non ne parlavano nemmeno. Avendo già la guida
shildt, eviterei un testo che inizi d'accapo con i programmi consolle.
2) visual o borland? (avrete risposto gia un milione di vote)
Saluti
Gilmour
-- 
Icq: 32405502
Se le persone che parlano male di me, sapessero quello che dico io di loro, parlerebbero peggio.
Jim Morrison
Clicca sul link per contattarmi direttamente da icq
http://msg.mirabilis.com/scripts/contact.dll?msgto=32405502

 2) visual o borland? (avrete risposto gia un milione di vote)
Dal punto di vista dell'aderenza allo standard credo che sia meglio
il Borland.
Dagli altri punti di vista chiedi su
it.comp.programmare.win32
ciao!
--
Gerolamo

 2) visual o borland? (avrete risposto gia un milione di vote)
Si. Dicendo sempre che in questo NG si parla di C++ e non di Windows. E
neppure di Borland o Microsoft.
--
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

per bene tutto e di ricominciare su un libro serio :-)))
Curiosità, perché sarei ot? Dopotutto non è che sto parlando di visual
basic, ma di Visual c++, credo che ci si avvicini molto di più
it.comp.lang.c++ che it.comp.programmare.win32... :)
potresti darmi delle delucidazioni?


 potresti darmi delle delucidazioni?
Certo: perche' il manifesto di it.comp.lang.c++
dice chiaramente che in questo gruppo si puo' parlare solo degli
aspetti STANDARD del C++ "come descritto dallo standard ISO".
Questo perchè esistono altri gruppi per gli argomenti specifici delle
piattaforme piu' popolari.
Gruppi dove si puo' parlare di specifiche piattaforme sono:
Per Win32 (9x, NT/2000/XP): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in
                inglese, ma si puo' postare anche in italiano)
oltre ad it.comp.programmare per cio' che non rientra in questi sopra
I manifesti dei gruppi della gerarchia it.* li trovi al link:
http://www.news.nic.it/gruppi-it.html
Il manifesto di it.comp.lang.c++ lo trovi al link:
http://www.news.nic.it/manif/it.comp.lang.c++.txt
ciao!
--
Gerolamo
Using: Win2000 Pro, Borland C++ Compiler 5.5.1
Listening: Sting - Fragile
Newsgroup: it.comp.lang.c++
Titolo: Algoritmo Min Max

Salve a tutti
volevo chiedervi se qualcuno mi potrebbe indirizzare verso qualche
informazione sull'algoritmo Min Max con qualche esempio
Grazie Mae

 informazione sull'algoritmo Min Max con qualche esempio
Che cosa sarebbe l'algoritmo Min Max ?
Stai per caso parlando del minimax, algoritmo per giochi di strategia a
turno?
Se e' cosi' ho del materiale che ti puo' essere utile. Contattami in
privato.**
Se non e' cosi', allora non conosco Min Max e non ti posso aiutare, non
contattarmi ;-)
Alternativamente, possiamo parlare del minimax su questo NG, dipende da
quante informazioni ti servono... Se te ne servono molte conviene non
anniare il NG.
Decidi tu.
Tommy


Credi che abbia sbagliato a postare qui ?
Mae

 Credi che abbia sbagliato a postare qui ?
Forse un it.scienze.informatica e' piu' adatto, anche se non saprei...
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 Forse un it.scienze.informatica e' piu' adatto, anche se non saprei...
Probabilmente si...
Ad ogni modo io non considero gli algoritmi OT su questo NG.
Consigliavo di contattarmi in privato e non aprire l'argomento qui in
quanto magari si dilungava troppo diventando noioso per il NG ed inoltre
avevo del materiale da spedire.
Tommy
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c++
Titolo: Dove per un compilatore C++?

Vorrei sapere dove poter trovare un compilatore per C++ scaricabile
gratuitamente da Internet.
Ringrazio anticipatamente chi mi darà una mano

 gratuitamente da Internet.
Per DOS c'è il DJGPP all'indirizzo 
http://www.delorie.com/djgpp/
.
EMG

Dove posso trovare un compilatore c++
gratuite scaricabile da internet.

 gratuite scaricabile da internet.
Al sito 
http://www.delorie.com/djgpp/
 trovi il DJGPP per DOS.
EMG

Puoi trovare LCC Win32, un compilatore C per Win32 a:
http://www.geocities.com/SiliconValley/Heights/9069/index.html
Ha un ambiente imtegrato con (tante) funzioni che ti stupiranno, anche
se non č tutto colorato e con i ghirigori come MSVC++!
Ciao
Benedetto
ů


Linux...
--
ICQ 5001235
logan@voi_vitsi.pulp-fiction.com
 (To mail me, take away voi_vitsi.)

Linux...
Linux č un compilatore? Da quando? Ops forse ho sbagliato dimensione,
ritorno nella mia galassia :-)
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
---------------------------------------------------------------------------
Newsgroup: it.comp.lang.c++
Titolo: problema di stringhe in un programmino..... aiuto..

ciao a tutti,
espongo subito il problemino !(??)
volevo sapere se esiste una struttura in c++ che permette di
racchiudere una ventina di stringhe (come se fosse un insieme...) e
poi successivamente, data una in ingresso, analizzarla per vedere se
appartiene o meno all'insieme..... 
ciao.... Nico

]

 appartiene o meno all'insieme.....
Si. Guardati i tipi std::set o std::multiset della libreria standard.
EMG


ti ringrazio per la risposta.... ma non si può fare ... o meglio si
possono inserire all'interno dell'insieme (che può essere di tipo :
char, int ed enum) solo valori che sono interni ad un min e ad un max
definito.... la cosa che servirebbe a me è un pochino diversa....
vorrei definire un insieme del tipo <"A1", "A2", "A3", "..... "B1",
"B2"....> e poi vedere se una stringa appartiene o meno ad esso.....
grazie comunque... 

"B2"....> e poi vedere se una stringa appartiene o meno ad esso.....
O non ho capito il tuo problema od una cosa del genere dovrebbe andare
bene:
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main(void)
{
	set<string> stringset;
	string s1="pippo";
	string s2="pluto";
	string s3="topolino";
	string s4="minnie";
	stringset.insert(s1);
	stringset.insert(s2);
	stringset.insert(s3);
	stringset.insert(s4);
	while(1)
	{
		string tmp;
		cout<<"Stringa da verificare: ";
		cin>>tmp;
		if(stringset.find(tmp)!=stringset.end())
			cout<<"Stringa -"<<tmp<<"- appartenente al set\n";
		else
			cout<<"Stringa -"<<tmp<<"- non appartenente al set\n";
	}
	return 0;


>definito.... la cosa che servirebbe a me è un pochino diversa....

grazie lo stesso...... ho risolto tutto con un array
bidimensionale.... e ricerco semplicemente all'interno dell'array....
questo esame mi farà impazzire... (Ingegneria del Software....)
Nico
Newsgroup: it.comp.lang.c++
Titolo: Aiuto Urgente!!!!

Ho realizzato un SW per Win 95 che utilizza la _outp per scrivere byte
verso la porta parallela.
Devo ora convertire lo stesso SW per WinNt. La _outp non è compatibile con
WinNT!
Come posso fare????
Paolo
--
Posted from [195.223.129.35]
via Mailgate.ORG Server - 
http://www.mailgate.org

 Come posso fare????
Per accedere all'hardware in NT ci vogliono i driver virtuali VXD.
-- 
     (ZZZ)       Filippo Salotti, Bagni di Lucca, Lucca, Italy.
    //   \\  _                 E-mail : 
fil...@humnet.unipi.it
   /Y\    ZD<_o===============================================o
 .oZZZZZo.     | Studente Ingegneria Informatica Automatica  |
<OXXXXXXXO>    | Dip. Sistemi Elettrici Universita' di Pisa. |

Per accedere all'hardware in NT ci vogliono i driver virtuali VXD.
Infatti; e si trovano in rete driver gia` fatti che ti permettono
di fare quel che desideri, e che puoi scaricare gratuitamente.
Ad esempio, prova a scaricarti TinyPort, che trovi, ad esempio,
con filename tinypo11.zip, a 
www.filelibrary.com
 (shareware);
come freeware, la stessa funzionalita` dovresti poterla avere
da 
http://www.einev.ch/references/mondada/mmp/
, l'utility
"MapMemPlus".
Alex

 "MapMemPlus".
Si trovano solo mirati alla gestione delle porte standard (parallele o
seriali)?


 seriali)?
Ok ho visto tutta la doc e ora ho capito, c'e' pero' qualcosa che
permette di gestire anche gli IRQ?
Ciao.


permette di gestire anche gli IRQ?
Non ne conosco di gratuiti; ci sono invece, un poco
costosi, dei driver accompagnati da ActiveX, fatti
per essere usati ad esempio da visual basic, che,
credo, puoi usare per ottenere la traduzione di un
IRQ del tuo hardware in un "evento" ActiveX da
gestire.  L'overhead di tempi puo` pero` assai
facilmente risultare troppo elevato, secondo me.
La cosa migliore puo` essere quella di scaricarsi
(o ottenere da opportuni abbonamenti MSDN) il
Driver Development Kit (DDK) della Microsoft, che
contiene sorgenti di esempio che potresti riuscire
ad adattare ai tuoi scopi.
Alex
Newsgroup: it.comp.lang.c++
Titolo: aiuto! Richiamo programmi

Salve a tutti,
volevo chiedere se qualcuno poteva indicarmi come e' possibile
richiamare un applicazione all'interno di un programma scritto in C o C++
In particolare se devo richiamare ad esempio il programma netstat.exe con
alcuni parametri come faccio, e come faccio ad utilizzare i risultati del
programma netstat all'interno del mio programma?
grazie anticipatamente e scusatemi, se è una domanda banale almeno
indicatemi una faq o un howto.
grazie!

o C++
La funzione 'ShellExecute' dovrebbe fare al caso tuo.
Il Ghenio

 wrote in message 80hfbk$s35$1...@nslave1.tin.it...

Noto che ho risposto solo su it.comp.programmare.win32 (apparentement
la reply del dannato Outlook che uso al lavoro non gestisce i cross-post).
Comunque, per ripetere -- la soluzione piu` semplice e` popen (che
puo` essere chiamata _popen da compilatori aderenti allo standard ISO).
Alex

 puo` essere chiamata _popen da compilatori aderenti allo standard ISO).
Secondo il mio DJGPP, popen() non è standard (e _popen() non esiste
proprio). Chi sbaglia?
EMG

 proprio). Chi sbaglia?
Tutti e nessuno.  Ci sono due standard in conflitto fra loro, entrambi ISO:
Posix, che definisce popen e altre funzioni che devono venire esposte in
stdio.h; e C, che vieta a stdio.h di esportare popen o altri identificatori
che non siano in una certa lista.  L'uso di _popen invece di popen serve
per cercare di rispettare appieno lo standard C, e "quasi" quello Posix
(infatti gli identificatori che iniziano con _ sono ammessi dallo std C).
Altri compilatori ancora definiscono _popen oppure popen a seconda
delle opzioni di linea comandi utilizzate per invocarli, che permettono
a ogni compilazione di scegliere fra i due standard.
Altre funzioni "quasi standard" che hanno simili problemi includono
strdup e stricmp.  Praticamente tutti i compilatori hanno queste
funzionalita`, ma per qualche ragione lo standard del C non le
ammette, da cui il proliferaredi _strdup e _stricmp (ecc ecc) nei
compilatori in modalita` "quasi ISO-C standard".
Alex

OE è innocente, il messaggio è arrivato su più NG..
--
Diego "1985" Pettenò
per gli spammer la mail è
diego...@hotmail.com
ATTENZIONE: rispondo ai messaggi di pubblicità indesiderata
su TiscaliNet con un bel messaggio al provider di competenza!
per i messaggi seri è
diego....@tiscalinet.it
Newsgroup: it.comp.lang.c++
Titolo: Intersezioni

Quacuno puņ aiutarmi a scrivere una funzione che verifichi la presenza di un
intersezione e quindi le coordinate del punto tra:
Un triangolo di vertici A(x1,y1,z1), B(x2,y2,z2), C(x3,y3,z3) .
Una retta passante per P1(x1,y1,z1) P2(x2,y2,z2).
Ringrazio anticipatamente chiunque possa aiutarmi.
mi...@lert.it

 Una retta passante per P1(x1,y1,z1) P2(x2,y2,z2).
Mi viene il sospetto che tua stia facendo un ray-tracer....
Comunque il problema che poni e' piu' un problema di geometria che di C++,
ti do la soluzione "matematica", l'implementazione poi non e' difficile:
Ah, innanzitutto hai dato le stesse coordinate ad A e P1, e a B e P2, non credo
che tu intendessi questo, perche' senno la soluzione e' banale.
Dunque chiamiamo v1 il vettore A-P1, v2 il vettore B-P1, v3 il vettore C-v3 e v
il vettore P2-P1.
A questo punto ti costruisci una matrice tre per tre M le cui colonne siano i
vettori v1, v2 e v3. Se M non e' invertibile allora la retta e' parallela al
piano contenente il triangolo. In caso contrario chiama N la matrice inversa di
M.
Ti calcoli il vettore b=Nv (prodotto matrice-vettore) e chiami s la somma delle
tre componenti di b.
Se tutte e tre le componenti di b sono numeri compresi tra 0 e s allora la tua
retta interseca il triangolo e il punto x di intersezione e' dato da:
   x=P1+sv
?manu*

Grazie dell'aiuto sei stato molto gentile!!!
P.S.
In effetti sto facendo proprio una specie di ray tracing ma lo uso per la
gestione delle collisioni in un gioco di auto.
Ciao!!

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

Ciao a tutti,
vorrei sapere fino a che punto il compilatore DJGPP supporta i templates, 
quindi STL.
Grazie.
Ciao
Massimiliano Trezzi
e-mail: 
mtr...@pn.itnet.it

quindi STL.
io tempo fa ho provato a fare qualcosa, ma non avendo la
documentazione di STL mi basavo su un file di help del borland, e
sembrava che le implementazioni delle librerie fossero differenti.
le versioni erano borland 4.5 e djgpp 2.0, ora ci sono le nuove
versioni di entrambi percio` forse le cose sono cambiate.
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343
Newsgroup: it.comp.lang.c++
Titolo: [Nuovo] Alcune domande banali

Salve a tutti...........
Dopo anni di inattività, mi è venuta nostalgia di ristudiare il C/C++.
Attualmente lavoro in Java e le sue limitazioni e la sua lentezza, mi hanno
fatto aumentare questa voglia.
Vi premetto che giocherellavo abbastanza con il C, utilizzando anche piccole
routine scritte in assembly anche a 32 bit e poi importate, ma tutto questo
sotto DOS. Non so se ad oggi i sistemi Windows lo permettano, così
facilmente.
Le mie domando sono queste :
- Scegliere un IDE o un altro (per esempio MS VisualC++ o Borland C++)
condiziona lo studio del linguaggio?
Oppure un qualunque libro di C/C++ può poi essere applicato su qualunque
IDE?
- Quali libri m i consigliate per : cominciare a ristudiare il C/C++,
studiare in maniere avanzata questo linguaggio applicato a problematiche più
reali come : la grafica, i db, le reti etc.
- I nuovi ambienti di sviluppo permettono di lavorare con l'assembly? Se si,
ci sono libri che spiegano anche questo aspetto?
- Con quale IDE mi consigliate di cominciare? Viasual C++ mi è sembrato
molto potente ma anche molto complesso e macchinoso per un neofita.
Grazie mille a tutti.

 molto potente ma anche molto complesso e macchinoso per un neofita.
Come detto sopra io ti consiglio il Borland Builder, comunque, in generale
tutti gli IDE risultano complessi all'inizio.
Ciao
El  Berto

Mille grazie
Newsgroup: it.comp.lang.c++
Titolo: Mi spiegate cosa è successo ?

Ciao a tutti.
Ho un problema che non so se sia relativo all'utilizzo delle classi oppure
al compilatore (Microsoft Visual C++ 5.0) o addirittura al S.O. (Win98).
Ho creato una applicazione console, cioè da lanciare in una finestra sotto
Windows, e funzionava perfettamente. Ho salvato il file eseguibile su
dischetto. Poi ho modificato il codice e ho di nuovo creato l'eseguibile. A
questo punto iniziano i problemi. Il programma deve eseguire nel main un
ciclo for: alla prima iterazione il programma si conclude, senza segnalarmi
NESSUN tipo di errore (il main si conclude restituendo 0). Il bello è che ho
di nuovo lanciato il file che avevo su dischetto (quello che funzionava) e
anche questo ora mi fa lo stesso scherzo, cioè non porta a conclusione
neanche una iterazione. Posso accettare che nel codice modificato abbia
introdotto degli errori e quindi non funzioni, ma quello vecchio perchè
prima funzionava e ora non funziona più ? Cosa è successo ? Un virus ?
Con il debug ho identificato il punto in cui il programma modificato
misteriosamente si blocca ed è in una funzione di una classe che sto usando
per manipolare le matrici. Di questa classe
però non ho il codice sorgente, ma solo il file header e .lib, quindi non so
come sia implementata (e anche se l'avessi, non sarei in grado di
correggerla, perchè con il C++ sono un principiante).
Avete qualche suggerimento per questo insolito problema ?
GRAZIE
Giancarlo Penza
pe...@tin.it

dovresti postare un minimo di codice, a priori sulla
base di quanto dici non credo si possa dire molto.
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  G: Per concludere, possiamo chiedervi di commentare
     l'attuale panorama informatico?
  I: /* l'attuale panorama informatico */
------------------------------------------------------------------


Il programma è molto esteso e quindi inviare il codice mi sembrava chiedere
troppo; settimana prossima provo a lanciare il file eseguibile (quello che
avevo salvato su dischetto, che funzionava) sul Pc di un mio amico, per
vedere se il problema è il mio Pc. Poi ti faccio sapere.
Grazie comunque.
Giancarlo Penza

Newsgroup: it.comp.lang.c++
Titolo: come faccio ad inizializzare un puntatore?

Qualcuno  potrebbe spiegarmelo?

Qualcuno  potrebbe spiegarmelo?
Assegnandoli l'indirizzo di memoria di una variabile oppure inizializzandolo
a NULL
//Assegno alla variabile pPuntatore l'indirizzo di MyClass
MyClass* pPuntatore = &MyClass;
//Utilizzo un metodo della classe MyClass con il puntatore
pPuntatore->Metodo_di_MyClass();
//Oppure posso inizializzare un puntatore a NULL
MyClass* pPuntatore = NULL;
Ciao
Terenzio

Ha dimenticato:
int *a = new int;
per inizializzarlo con un nuovo indirizzo di memoria.
Newsgroup: it.comp.lang.c++
Titolo: vector

Sto implementando una classe membro di un'altra classe che a sua volta
viene inserita in un vector.
La classe membro alloca e dealloca memoria dinamica .
tipo :
 class auto_buffer {  char *buffer ; int size ; }
 class main { auto_buffer obj ; ... } ;
Quali funzioni devono essere necessariamente definite affinche' vector
non commetta errori quando copia gli elementi della classe principale?
Credo almeno :
X::X(const &X)
X& operator=(const X &)
Corretto ? O basta solo la prima ?
saluti

 Corretto ? O basta solo la prima ?
Le devi definire entrambe, e devi anche definire il costruttore di default:
X::X()
E.


Il costruttore di default non e' indispensabile, potrebbe essere in
alternativa ad un costruttore ad hoc. Il distruttore invece e' con
ogni probabilita' necessario.
Ciao,
Nicola

 ogni probabilita' necessario.
Sicuro? Mi sembra che il mio compilatore mi dia errore se non è definito 
il costruttore di default. D'altra parte mi pare che la dichiarazione
vector<X> x(5);
chiami per 5 volte il costruttore X::X().
E.

 chiami per 5 volte il costruttore X::X().
In questo caso e' necessario, ma nel caso:
vector<X> x(5, X(param1, param2, param3));
e' necessario solo il copy constructor. Se il costruttore vector<T>(int) non 
viene utilizzato, non e' necessario che sia compilabile.
--
Marco 


E' vero... pensavo che fosse necessario comunque. Probabilmente è perché 
io utilizzo spesso il metodo resize(), che immagino abbia pure bisogno 
del costruttore di default.
E.

 costruttore di default.
In realta' le signature del costruttore di vector e di resize dovrebbero 
essere le stesse, e approssimativamente:
vector(int count, T t = T())
e
resize(int count, T t = T())
quindi di costruttore e di resize ne esiste una sola versione, il 
costruttore di default sul parametro serve solo se utilizzi il valore di 
default del secondo parametro. All'interno di tutte le altre funzioni, non 
credo che vector si "permetta" ad default-inizializzare alcuna variabile di 
tipo T.
--
Marco

Newsgroup: it.comp.lang.c++
Titolo: Equation to C++

Please help me with the following equation:
1.  L + w / log[1 + sqroot(2)] + log (L+w/L)
2.  File = Erf [ ( x - s ) / sq.root (2)]
How do i write this in C++ ?  especially the error function ??
thanks inadvance
your help is sincerely appreciated
May

 2.  File = Erf [ ( x - s ) / sq.root (2)]
File = erf ( (x-s) / sqrt(2.0) )
E.

 E.

 mathematica ?
No. Io must write your own algorithm, or find a library that do this for
you.
But I think it's a complex issue, because Mathematica do a best fit
algorithm before calculating the value. You need a good numeric
calculation book to implement this.

your help is sincerely appreciated
Just for the record, this is an *Italian* newsgroup. The "it" in front
of its name does not stand for "Information Technology" - as you might
have thought - but for "ITalian" :-) Writing in Italian is kindly
requested even if reading English is not a big issue. It's the lingua
franca of Computer Science ;-) My two cents just for the sake of the
ones, here, who do not read English fluenty.
Newsgroup: it.comp.lang.c++
Titolo: Ragazzi un bel sito

Un bel sito per imparare a programmare con c++. Ne conoscete? Preferite
consigliarmi un bel libro?


potresti cercare con google la guida di Tryckyc e fatta bene x iniziare ada
imparare


Mmmm...TryckyC non insegna il C++.
Prova qua:
http://www.tutorialpc.it/c++1.asp
e qua:
http://www.cerca-manuali.it/manuale-guida/c++.htm
Sennò ti scarichi "Thinking in C++" di Eckel gratuito (in inglese).
Maurus
Maurus

Newsgroup: it.comp.lang.c++
Titolo: [!]Help!!! Link per tutorials e/o corsi di C++

    Scusate tutti quanti...
    Io programmo in VB6 e da poco ho scoperto che si può integrare DirectX
con VB6... ma è trooooooooppo lento per la grafica!!! Quindi volevo iniziare
a programmare in C++ almeno quando avrei avuto abbastanza esperienza (non
sono totalmente a digiuno di C, comunque! ^_^) avrei potuto inziare a
programmare giochi in C++!!!
    Ho scaricato le SDK delle DirectX 9 quindi ho BISOGNO di imparare, non
dico presto, ma ultrabene in C++!!! Qualcuno ha qualche link di qualche sito
ben strutturato per imparare correttamente C++ senza tralasciare troppi
particolari indietro (eh, ho imparato che anche i 'particolari' sono
mooooolto importanti!)? Anche qualche titolo di qualche libro va bene...
    Scusate il megadisturbo e grazie!!! ^_^

 wrote

Guarda che per le directx basta il C.
Se poi vuoi imparare il C++ allora da 
http://www.umbertosorbo.it/
 puoi
scaricare "pensare in C++" la traduzione di Thinking in C++ di Bruce Eckel.
Tommy


Grazie!!!
Sapevo che basta il C... ma per le classi poi come faccio? Ma C++ non si
dovrebbe scostare tanto da C, o no? E poi un po' di C lo so... il problema č
che da molto che non lo riguardo piů e non faccio pratica... i puntatori e
ste cose qui mi hanno mandato nel pallone a scuola e poi praticamente dopo
un anno abbiamo cambiato linguaggio cosě, di punto in bianco! Quindi puoi
immaginare cosa mi sia rimasto... :\ che palle!!! E pensare che č cosě
importante... bah! Accidenti ai programmi scolastici fatti male!

 importante... bah! Accidenti ai programmi scolastici fatti male!
Beato tu che hai fatto programmazione a scuola ;-)
Tommy

Newsgroup: it.comp.lang.c++
Titolo: algoritmi di confronto

Devo confrontare due testi e determinare le differenze, praticamente mi
serve implementare un diff. Quale parolina magica devo mettere su google
per trovarmi la spiegazione degli algortmi che ci stanno sotto?
Con le chiavi di ricerca che provo, evidentemente scarse, sono sommerso
dagli algortmi di ordinamento.

 Devo confrontare due testi e determinare le differenze
Mi rispondo da me, questo mi sembra un buon punto di partenza:
http://en.wikipedia.org/wiki/Longest_common_subsequence_problem
http://nist.gov/dads/HTML/longestCommonSubsequence.html
Newsgroup: it.comp.lang.c++
Titolo: COME SI CALCOLA IL CODICE FISCALE?

Come si calcola il codice fiscale?
traendolo ovviamente dal cognome,nome, sesso, luogo e data di nascita?
pol...@freemail.it


Non lo so (so solo che ci sono dentro data di nascita, codice del
comune, ma non so il calcolo esatto) ma ho un programma che se
inserisci i dati ti calcola il codice fiscale...nel caso ti servisse
dimmelo.


Supponiamo che questo sia un codice fiscale
ccc ddd 54 p 23 f456 f
Le prime 6 lettere (solo consonanti) si prelevano dal
cognome e dal nome, poi ci sono due numeri che sono
l'anno di nascita, poi c'è una lettera che corrisponde al mese
(non conosco bene la corrispondenza posso dirti che settembre
è p)
poi c'è un numero che corrisponde al giorno di nascita con la peculiarità
che se il codice è il codice di una donna a questo numero va sommato
40. (13 settembre uomo sarebbe p13, 13 settembre donna sarebbe p 53)
Le altre 4cifre (anzi una lettera più una cifra) sono la sigla del comune
e qui bisogna avere la tabella (è come per i CAP non puoi risalirci dal
comune
o lo sai o nisba).
L'ultima lettera è invece un check (una specie di controllo di parità per
intenderci)
ma non ho la più pallida idea di come si ricavi.
Spero di averti fatto comprendere almeno la logica
 
spu...@usa.net


E COSA C'ENTRA COL C++???



Magari vuole creare un programma in C++ con il quale inserendo i dati
anagrafici, riceve in output il codice fiscale.
___________
bLAcKPaNTeR
Reply to:
daniel...@hotmail.com
per messaggi brevi (SMS sul cellulare), invece:
omi...@wappi.com

E COSA C'ENTRA COL C++???
Niente, visto che si tratta di un algoritmo(quello di prelevare il
codice fiscale in base ai dati anagrafici di un certo individuo) che
può essere poi sviluppato in qualsiasi linguaggio di programmazione.
Il Ghenio
-----
Proteggeremo il mondo della devastazione!
Uniremo tutti i popoli nella nostra nazione!
Denunceremo i mali della verità e dell'amore,
Estenderemo il nostro potere fino alle stelle.
Jesse!
James!
Team Rocket pronto a partire alla velocità della luce.
Arrendetevi subito oppure preparatevi a combattere.
Miaaaoooo, proprio cosi'!
(Team Rocket)
-----

E COSA C'ENTRA COL C++???
niente, ma con cosa c'entra? Uno lo domanda dove è di casa ;)
--
Diego "DGP85" Pettenò
daps...@nightmail.com
Newsgroup: it.comp.lang.c++
Titolo: deque

Salve a tutti, ecco il mio problema:
Ho una coda deque di double:
 typedef double *dataIn;
 typedef std::deque<dataIn> pdDeque;
 pdDeque ISTDequeD;
Ora ho fatto una funzioncina per trovare max e min emetterli in array:
double *temp;
int tempKV,tempLeg,tempNPS;
//inizializzo
  temp=ISTDequeD.front();
  KVmin=temp[4];
  KVmax=temp[4];
  Legmin=temp[3];
  Legmax=temp[3];
  NPSmin=temp[2];
  NPSmax=temp[2];
// scorro il vettore
  for(ISTDequeD = deque.begin();ISTDequeD != deque.end();ISTDequeD++)
   {
   temp=*ISTDequeD;
   if (KVmin<temp[4]) KVmin=temp[4] ;
   if (KVmax>temp[4]) KVmax=temp[4];
   if (Legmin<temp[3]) Legmin=temp[3];
   if (Legmax>temp[3]) Legmax=temp[3];
   if (NPSmin<temp[2]) NPSmin=temp[2];
   if (NPSmax>temp[2]) NPSmax=temp[2];
   }
Non va. Dove sbaglio?
Scusate per la banalità della domanda e ringraziamenti anticipati.

    if (NPSmax>temp[2]) NPSmax=temp[2];
KVmin ecc... le ho dichiarate, nel post ho omesso la dichiarazione, non č lě
il problema. Per esser chiari :)

Risolto con:
  for( i = 0;  i< ISTDequeD.size() ; i++ )   {
   temp=ISTDequeD[ i ];
Newsgroup: it.comp.lang.c++
Titolo: input di std::string

come e' possibile gestire l'input di una std::string in modo che
accetti una stringa composta da piu' parole separate da spazi 
bianchi e/o da punteggiatura ?
include <iostream>
include <string>
using namespace std;
int main()
{
string s;
cin >> s;
// input:  "mario rossi"
cout << s;
// output:  mario
return 0;
}
PS. preferirei ricorrere a funzioni di <iostream> anziche'
	ad array di caratteri stile C.
Grazie.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 da punteggiatura ?
#include <iostream>
#include <string>
int main() {
    char buff[80];
    std::string nome;
 std::cin.getline(buff, 80);
    nome = buff;
    std::cout << nome << std::endl;
    system("PAUSE");
    return 0;
}
---------OUTPUT:
Francesco Colocci Vespucci, 12345
Francesco Colocci Vespucci, 12345
Premere un tasto per continuare...
////////////////////////////////////
Questo è un modo....
Ciao,
Checco.

 	ad array di caratteri stile C.
Scusa non avevo letto il P.S.
Comunque non penso ci siano altri modi.
Checco

Un altro modo "curioso" (perchè è più comodo usare un char[] e getline) è 
questo...
#include <iostream>
#include <string>
#include <iomanip>
int main() {
    std::string nome, pezzo;
    char stop;
    do {
        std::cin >> std::noskipws >> pezzo >> stop;
        nome += pezzo+" ";
    } while (stop!= 10);
    std::cout << nome << std::endl;
    system("PAUSE");
    return 0;
}
-----------------------
Francesco Colocci Vespucci
Francesco Colocci Vespucci
Premere un tasto per continuare...
//////////////
Ciao Checco.

 bianchi e/o da punteggiatura ?
Se non hai bisogno di complicarti la vita o di infilare dei char[] da
tutte le parti esiste anche la soluzione semplice:
  string s;
  getline(cin, s);
        Mauro



Ottimo :)
Questa non la sapevo! Ed il bello è che ce l'avevo a pag.58 (introduzione) 
dello Stroustrup.
Ti ringrazio anch'io,
Checco.
P.S.
Non è che per caso sai anche come far leggere a cin dei valori separati da 
virgole anzichè da "space"?
ad esempio,
// input: francesco, 24, 27.5
string nome;
int eta;
float media;
cin >> nome >> eta >> media;
Newsgroup: it.comp.lang.c++
Titolo: Ereditarietà, Incapsulamento e Polimorismo.

rigenerati, quindi "cambiando" nel corso del programma.
non esattamente. Quello è un tipo di polimorfismo che esiste a livello 
teorico ma non è sempre supportato. Per esempio non lo è in C++. Più in
generale il polimorfismo supportato da tutti i linguaggi (almeno quelli
OO) è il polimorfismo di derivazione. Ovvero il fatto che un'istanza di
un tipo derivato (o meglio un riferimento ad una tale instanza) può 
essere usato ovunque sia previsto un riferimento ad un suo tipo base.
Quindi definita l'interfaccia base e delle funzioni che la usano, tali
funzioni funzionano anche senza sapere quale è il tipo dell'istanza su
cui stanno operando a relatime (purchè derivato).
class B {	// the interface
};
void f( B* ); // code uses the interface.
class D1: public B {  // one type. D1 IsA B
};
class D2: public B {  // another type. D2 IsA B
};
...
D1 d1;
D2 d2;
...
f(&d1);  // code works with type D1 and also works with 
f(&d2);  // type D2 eve if it knows nothing about them (except they are
Bs!)
-- 
Posted from 
adsl-21-135.38-151.net24.it
 [151.38.135.21] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Bs!)
Tutto giusto, ma ti sei dimenticato il tipo di polimorfismo (a mio parere)
più importante:
class A
{
    virtual void f(void)
    {
        cout << "A::f()";
    }
};
class B1: public A
{
    virtual void f(void)
    {
        cout << "B1::f()";
    }
};
class B2: public A
{
    virtual void f(void)
    {
        cout << "B2::f()";
    }
};
...
A *p;
p = new A();
p->f();    // chiama A::f()
p = new B1();
p->f();    // chiama B1::f()
p = new B2();
p->f();    // chiama B2::f()
Massimo
Newsgroup: it.comp.lang.c++
Titolo: possesso condiviso per auto_ptr

Salve,
ho questo semplice quesito da porvi:
Il seguente sorgente genera un'errore a run-time a causa di un tentativo di
eliminare un puntatore già eliminato:
#include <memory>
#include <string>
auto_ptr<string> p1 (new string ("ciao"));
auto_ptr<string> p2 (p1.get());
int main() {
 return 0;
}
Però io ho letto che la funzione delete controlla prima se il puntatore è
nullo, e in caso negativo dealloca la memoria... quindi ho pensato
1) auto_ptr non usa la delete che tutti conosciamo?
2) se così fosse, perchè non la usa? In questo modo non si potrebbe avere un
possesso condiviso tra più auto_ptr senza avere problemi a run-time come nel
suddetto caso?
Grazie
--
Luigi

 auto_ptr senza avere problemi a run-time come nel suddetto caso?
Mi pare tu stia confondendo il fatto che si possa invocare delete su un
puntatore nullo con il fatto che non sia lecito invocare delete piů volte
con puntatori che si riferiscono allo stesso oggetto.
Se due auto_ptr<> conservano un puntatore allo stesso oggetto non hanno
modo di "cooperare" e il puntatore conservato da uno dei due non diventa
magicamente nullo quando l'altro invoca delete.
Max

 magicamente nullo quando l'altro invoca delete.
Si, certo, solo che io credevo che fosse possibile applicare delete piů
volte allo stesso puntatore, perchč pensavo che delete rendesse il puntatore
nullo. Invece lo elimina "fisicamente" e quindi non esiste piů?
Grazie
--
Luigi

 piů?
Temo tu stia confondendo il puntatore con l'oggetto a cui esso si
riferisce. 
Ci possono essere tanti puntatori che si riferiscono allo stesso oggetto.
'delete' distrugge quell'oggetto e fa in modo che la memoria allocata
venga in qualche modo reclamata, ma non tocca il puntatore. Se anche lo
rendesse nullo (ma non lo fa), di certo non potrebbe agire sui tutti gli
altri puntatori che si riferiscono allo stesso oggetto, i quali a questo
punto sono inutilizzabili (nemmeno come argomento di delete).
Max

 punto sono inutilizzabili (nemmeno come argomento di delete).
// Domande a raffica:
E quello che mi chiedo č:
1) Perchč sono inutilizzabili anche per delete?
2) Perchč esiste solo il puntatore ma tutta la memoria č stata liberata?
3) Se č cosě, il puntatore adesso non č nullo?
Grazie
--
Luigi

 
No, l'unico modo per rendere nullo un puntatore è assegnargli il valore 0
(o NULL, se vuoi).
Partiamo dalle basi. Capisci perchè il seguente codice ha un comportamento
indefinito?
          char* a1 = new char;
          char* a2 = a1;
          delete a1;
          delete a2;
Se capisci questo, la questione è tutta qua. Se due auto_ptr<>
possedessero due puntatori che si riferiscono allo stesso oggetto, ci
troveremmo nella medesima situazione.
Max


Umh.. perchè delete viene applicato ad a2 che punta ad un'oggetto
inesistente? :)
Grazie
--
Luigi