mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Destructing encapsulated objects

Hi all,
I am running into some problems that are pretty general, but I'm not sure
how to solve them.  Basically they are like this:  A parent window (or other
generic object) has pointers-to several child windows (or other object).
When a child window is deconstructed (pathway 1), it has to call a function
foo() in the parent.  However, when the parent is deconstructed first, and
subsequenty calls the child's deconstructor (pathway 2), I don't want the
child's deconstructor calling the parent's foo() function, because this is
illegal (but it will compile) and definitely causes a crash.  I tried moving
the parent's function to ITS parent, but the same problem remains, just one
level higher.  I'm sure someone else has solved this problem.  Any ideas?
I'd like the child to know when NOT to call the parent function, i.e., the
child should know when the PARENT is in ITS deconsructor, or better yet,
some general solution to this problem.
thanks
ms

 wrote:

Replace every "owner" pointer in your program with a Reference
Counting Smart Pointer (like the one on mine or many other folks'
web pages).
When children die, they destroy the RCSP to their parent. When the
last of these RCSPs dies, the RCSP itself calls the destructor of
the parent.
The parent can neither destroy itself or be destroyed by the outside
clients (such as the User). All attempts to destroy things route to
the children, and the parent is destroyed when the last one dies.
You have confused windows GUI "parent" with "owner object". In this
case the parent window is an inferior object to the children, and
only exists to support them.
If your UI goals include the concept of an open parent with no
children, add a Singleton to the program whose only job is to keep
one more RCSP lock on the parent. If the User selects the Close
option, nuke each child and then this Singleton.
--
 Phlip at politizen dot com                  (address munged)
======= 
http://users.deltanet.com/~tegan/home.html
 =======
  --  "Probably one of the toughest times in anyone's life...
        is when you have to kill someone you love...
        because they are the Devil"  -  Emo Phillips  --


    Consider revising your design, or...
    Consider adding a method to the child base which allows the
parent to set the childrens' parent-pointer to null.  Then in the child
base's
destructor (NOT deconstructor) check for null before invoking the
parent's foo().
class childbase;
class parent {
public:
       // ...
private:
     list<childbase> myChildren;
};
class childbase {
public:
        void setParent(parent* p)  { myParent = p; };
        ~childbase() { if(myParent) myParent->foo(); };
private:
        parent *myParent;
};
class child : public childbase {
public:
    // ...
};

 >ms
How about having the parent call the child's deconstructor before it
deconstructs itself?
Good luck   :^)
Peter
Newsgroup: it.comp.lang.c++
Titolo: A.A.A. Documentazione MFC cercasi!!

Salve a tutti!!!
Lo so, lo so, gia' qualche altro milione di utenti avra' fatto questa
richiesta, ma dove posso trovare siti Internet con documentazione (completa
o no) sulle MFC di MS VC++?? So che esistono i due libroni della
MicrosoftPress "Programming with MFC" ma mi risultano quasi introvabili.
E altre risorse in rete su MS VC++??
Chiedo troppo?
Fatemi sapere a: 
pietro...@hotmail.com
Grazie!!!
Pietro

Ciao Packard,
  il 26 Nov 1997, parlavi di [A.A.A. Documentazione MFC cercasi!!] a All:
 PB> So che esistono i due libroni della MicrosoftPress "Programming 
 PB> with MFC" ma mi risultano quasi introvabili. 
Se ti riferisci ai libri "Programmare Win95 con MFC" di Jeff Procise (o come si
chiama lui :-)) non sono affatto introvabili...
Almeno qui (Napoli) si trovano nelle librerie piu' grandi.
Tra l'altro sono Microsoft Press distribuiti da MONDANDORI...
Greetings from Naples, Italy
Paolo"Jack Bass" Polce
p.s. da' anche uno sguardo a 
http://www.codeguru.com
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  NOTE: if present, remove "nospam." to reply...
  ItalTec BBS Free Internet Gateway - +39-81-5451506
  User email address:   
jack...@nospam.geocities.com
  User FidoNet address: 2:335/232
  Disclaimer: The views of this user are strictly his own.
  Naples, Italy.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Pietro
Sergio
Newsgroup: it.comp.lang.c++
Titolo: Building a template

Now... I have a problem... It's an engineering problem.
I have a function, we will call it MyBigFunc. It's a function that can be 
easily built as a static method, because it is the only function that the 
"user" will use and it is stateless.
So I wrote something like:
class MyClass
{
public:
    static int MyBigFunc() { return 0;}
};
Clearly there are some private/protected methods that are called by 
MyBigFunc. There is a storage (a sub-class) that is istantiated by MyBigFunc 
and is destroyed at the end of MyBigFunc. It's quite big but it's life is 
short (the life of MyBigFunc) The private/protected methods receive a 
pointer to this subclass.
...
private:
class MyClassSomeData
{
};
...
Then I decided to make it easily expandible, so I built some overridable 
functions that are called by MyBigFunc at various times. Clearly to be 
called by a static function they are static :-) The problem is that the 
"user" functions probably will need some private data that THEY will produce 
(so, for example, if a1, a2 and a3 are methods called by MyBigFunc, a1 could 
open a file that will be used by a2 and a3. The file must be closed in the 
end). There is even the possibility (it is probable) that a derived class 
will be stateful. So now I don't know what to do.
Oh... yes... I was forgetting something: at this time the base class is a 
template class and it calls the methods through "template-virtual" calls
So it's more like:
template <class T>
class MyClass
{
public:
    static int MyBigFunc()
    {
        MyClassSomeData SomeData;
        T::OneFunc(&SomeData);
        return 0;
    }
    static int OneFunc(MyClassSomeData *pSomeData) { // donothing }
}; 

Scusatemi... Volevo postarlo nel ng inglese

Newsgroup: it.comp.lang.c++
Titolo: win32sdk.hlp in italiano...

Esiste la versione in italiano della documentazione su windows?
se qualcuno ne conose l'esistenza, lo prego di rispondermi...

se qualcuno ne conose l'esistenza, lo prego di rispondermi...
No, Microsoft non ha interesse a realizzarla e per gli altri sarebbe un
lavoro inutile. Non credo esistera' mai.
Davide Marcato.
----------------------------------------------------
| -- Freelance International Consultant
| -- Win32/MFC/COM Development & Training
| -- Technical Writer & Speaker
----------------------------------------------------
| -- Email: 
mar...@programmers.net
| -- Web: 
http://www.DavideMarcato.com
----------------------------------------------------
Newsgroup: it.comp.lang.c++
Titolo: Puntatore a funzione membro come argomento costruttore clase

Ciao a tutti...
ho creato due classi:
class TMyClass {
   ...
   ...
   ...
   public:
       void funzione();
};
typedef void (TMyClass::*pointer_funct)();
class TCallClass {
    ...
 
    public:
       TCallClass(pointer_funct callback);
};
quando provo ad eseguire:
void TMyClass::altra_funzione() {
   pointer_funct a = funzione;
}
Ottengo (gcc 3.x) il seguente errore:
Main.cpp:638: error: argument of type 'void (TMyClass::)()' does not match
void (TMyClass::*)()'
Ora, non usando i puntatori a funzione da un secolo, forse sbaglio qualcosa
io, ma non riesco a capire cosa...help me!

 void (TMyClass::*)()'
Come da errore, ho risolto passando 
... = &TMyClass::funzione;

 ... = &TMyClass::funzione;
Comunque, mi da un errore:
: undefined reference to TCallThread::TCallThread[in-charge](void
(TMyClass::*)())'
Perchè???


Potresti proporre un frammento di codice compilabile o che dovrebbe 
compilare ?
Fabio 

 compilare ?
E' questo!
Nel senso che basta che crei la main e fai la chiamata!
Comunque ho tagliato la testa al toro, ed ho passato il
riferimento diretto alla classe!

 io, ma non riesco a capire cosa...help me!
I puntatori a funzione membro non si usano cosi'. Guarda questo esempio:
#include<iostream>
using namespace std;
class A {
    int a;
    public:
    void f(){cout << "f()" << endl;}
};
typedef void (A::*P)();
int main()
{
    A a;
    P pf = &A::f;
    (a.*pf)();
}
Tommaso
Newsgroup: it.comp.lang.c++
Titolo: Borland C++ 5.02

Scusate..qualcuno mi ha detto che l'intera suite Borland C++ 5.02 e 
liberamente utilizzabile..davvero? anche le OWL/ObjectComponents e tutto 
il resto?
Qualcuno puo' chiarirmi questo fatto..tnx..:)
-- 
 [darXstar@Eleanor]$Phantom_Menace_
        * 
darXstar.tin.it
        * FidoNET 2:335/241.5
        * ICQ 11151997
 
http://darxstar.cjb.net

il resto?
L'hanno dato compreso in Computer Magazine di Aprile, ma non e' piu'
disponibile nelle edicole (anche se si potrebbe girare un po' di
edicole, magari qualcuna ancora ne ha una copia).
Sul fatto che sia liberamente utilizzabile penso che non sia una
versione Trial, ma che possa essere utilizzata senza limitazioni.
Il problema che mi pongo io e' nella licenza d'uso, cioe' se e' lecito
o meno pubblicare i propri lavori usando tale versione free (free si
fa per dire, visto che e' regolarmente venduta e ancora supportata da
Borland).
Bye.
Joseph Parrello - OWL/C++ Programmer
http://JoParrello.freeweb.org
(
jopar...@geocities.com
)

Newsgroup: it.comp.lang.c++
Titolo: E' una cosa fattibile secondo voi ?

Anni fa un mio amico russo ( ma italiano al 100% in pratica) mi disse che
lui era riuscito a fare un programma che era in grado di scrivere in output
il suo stesso codice...io a suo tempo ci pensai per svariato tempo, senza
riuscire a trovare una soluzione... dimenticandomene poi col tempo. Ora mi č
tornato in mente e passo a voi la palla: č una cosa possibile o sono stato
preso in giro ?
ciao a tutti.
Fly

da: 
http://www.nyx.net/~gthompso/self_c++.txt
Language: C++
Author: 
lapi...@utexas.edu
#include<iostream.h>
main(){char*s="#include<iostream.h>%cmain(){char*s=%c%s%c;cout.form(s,10,34,
s,34,10);}%c";cout.form(s,10,34,s,34,10);}
Author: David Rogers
#include <iostream.h>
#define ENIUQ(TEMPLATE) cout << TEMPLATE << "(" << #TEMPLATE << ");}";
void main()
{ENIUQ("#include <iostream.h>\n#define ENIUQ(TEMPLATE) cout << TEMPLATE
<< \"(\" << #TEMPLATE << \");}\";\n\nvoid
main()\n{ENIUQ");}Ciao,Giambattista

 main()\n{ENIUQ");}Ciao,Giambattista
Bhe...non mi sembra proprio quello che l'amico @facciofintadifingere@ ha
chiesto...
Ma ciao
Newsgroup: it.comp.lang.c++
Titolo: Trovare sottostringhe

Ho un problema che probabilmente è banale ma mi sta facendo impazzire:
devo fare una funzione che conti le occorrenze di una stringa all'interno di
una più grande.
Qualcuno ha mica una funzione già pronta per fare questo? O al limite uno
spunto su cui lavorare!
Grazie mille anticipatamente.
Luca

 O al limite uno spunto su cui lavorare!
Prova con qualcosa di questo genere:
#include <iostream>
#include <string>
#include <vector>
int main()
{
    std::vector<std::string> vs;
    std::vector<size_t> vi;
    std::string s("onorarono");
    std::string sf("no");
    size_t i =  0;
    while(1)
    {
        i = s.find(sf , i);
        if(i == std::string::npos) break;
        vs.push_back(s.substr(i, i + sf.size()-1) );
        vi.push_back(i);
        ++i;
    }
    for(size_t i = 0; i < vs.size(); ++i)
    {
        std::cout << vs[i] << " in posizione: ";
        std::cout << vi[i] << std::endl;
    }
}
--
Gerolamo

         vs.push_back(s.substr(i, i + sf.size()-1) );
Porcavacca!
Come al solito ci metto l'errore...
Per auto-punizione commento il codice :-))
#include <iostream>
#include <string>
#include <vector>
int main()
{
    std::vector<std::string> vs;
    std::vector<size_t> vi;
    std::string s("nononte-rinocenonte-sulnonte");
    std::string sf("non");
    size_t i =  0;
    while(1)
    {
        // trova la prima occorrenza di sf in s
        // partendo a cercare dalla posizione i
        i = s.find(sf , i);
        // se è arrivato alla fine della stringa esce
        if(i == std::string::npos) break;
        // altrimenti copia la sottostringa trovata in vs
        vs.push_back(s.substr(i, sf.size()) );
        // segna la posizione dell'occorrenza trovata in vi
        vi.push_back(i);
        // aumenta il valore di i
        // i += sf.size(); // Trova un solo "non" in "nononte"
        ++i; // per trovare anche quelli sovrapposti
    }
    // stampa le stringhe e le posizioni


 > Prova con qualcosa di questo genere:
Ti ringrazio ma mi servirebbe un codice anche un po' più complesso ma senza
l'utilizzo delle classi: è per un esame dell'università!
Se trovassi qualcosa mi faresti un grossissimo favore!
Grazie
Luca


Farlo da te no, eh?
Ciao,
Nicola

 ma senza l'utilizzo delle classi: è per un esame dell'università!
La soluzione C++ te l'ho data.
Se non ti sta bene e ti piace lavorare con gli array di char,
allora, per quel che mi riguarda, non ti rimane altro che metterti a
scrivere il codice da solo ed eventualmente chiedere qui se hai
problemi specifici.
Aggiungo:
fare gli esami copiando, solitamente non giova alla propria
preparazione...
--
Gerolamo

 ha scritto nel messaggio
news:tzz09.8697$n04.2...@twister2.libero.it...


 ha scritto nel messaggio
news:3XX09.12118$n04.3...@twister2.libero.it...

Allora devi fartelo da solo, il bello sta nel farlo per imparare qualcosa.
Newsgroup: it.comp.lang.c++
Titolo: Puntatori a matrici

Ciao,
ho appena sottoscritto questo newsgroup ed ho subito una domanda per voi
esperti di C.
Se ho il puntatore P che punta al primo elemento del vettore V[3] per
accedere al secondo elemento
di V posso incrementare il puntatore (P++), giusto?? (credo di si)
Se ho invece la matrice Mtx definita sugli indici i e j ed il puntatore Px
che punta all'elemento [0],[0],
come posso scorrere gli indici (ad es. avere l'elemento [1],[0]) con
l'aritmetica dei puntatori e come posso
definire il puntatore stesso??
mlra...@tin.it
Grazie a tutti.



Nel caso di matrici, il primo indice a variare e` quello indicato per ultimo
nella dichiarazione. Tale comportamento lo puoi verificare eseguendo
questo codice:
int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
  for(int i=0; i<3; ++i)
    for (int j=0; j<3; ++j)
      cout << "a[" << i << "][" << j << "] = " << a[i][j] << endl;
  cout << endl;
  int* IntPtr = &a[0][0];
  for(int k=0; k<9; ++k) {
    cout << "Passo " << k << " -> *IntPtr = " << *IntPtr << endl;
    ++IntPtr;
  };
che oltre a mostrarti come sono sistemati i valori nelle matrici, ti
fa capire anche come esse vengono memorizzate.
Da qui a capire come operare sul puntatore non dovrebbe essere difficile
e quindi te lo lascio per esercizio.
Paolo
----------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  e-mail: 
mar...@cli.di.unipi.it
 
----------------------------------------------------


Se ho ben capito vuoi scorrere gli elementi di un vettore bidimensionale
usando un puntatore.
mi sembra (ma é da verificare) che quando definiamo un vettore a due
dimensioni o più, gli elementi del vettore vengono disposti in memoria
sempre in concatenazione.
Quindi se scriviamo:
int vettore[3][3];
int *p;
// in memoria gli elementi saranno:
// (0;0),(0;1),(0;2),(1;0),(1;1),(1;2),(2;0),(2;1),(2;2)
// quindi se scriviamo
p= &vettore[0][0];  // che equivale a: p=vettore;
p+=3;
// ora p dovrebbe puntare a (1;0) che e' l'elemento 1 della seconda riga;
Non so' se funziona, ma credo di si fai un po' di prove se funziona.
Ciao by Lucio.

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

Windows 98 SE

Sono d'accordo.... :))
Newsgroup: it.comp.lang.c++
Titolo: Che ne pensate di questo libro?

"Programmare in C++" di Stephen Blaha. Apogeo edizioni.
Noto con grande stupore che neanche nelle FAQ si parla mai di questo
libro, allora mi é venuta l'idea di chiedere su questo ng se qualcuno
abbia mai avuto a che fare con il suddetto manuale di C++ e
possibilmente un opinione sulla sua qualità.
A mio avviso il pregio maggiore di "Programmare in C++" é quello di
spiegare con grande chiarezza la programmazione ad oggetti del c++(
pur basandosi su esempi fin troppo semplici) consigliandone caldamente
l'utilizzo nei programmi a discapito del vecchio approccio procedurale
del C. Inoltre c'é una sezione abbastanza ampia dedicata alle tecniche
per convertire in C++ i programmi scritti in C.
Il difetto maggiore del libro invece é che si sofferma poco sulle
nuove funzionalità del c++ come i modelli e la stl dedicando solamente
un capitolo per ognuna di esse, forse perché il libro é uscito in un
epoca in cui queste nuove funzionalità erano ancora troppo recenti e
quindi non abbastanza diffuse.
Se qualcun'altro ha letto questo libro gradirei molto sentire la sua
opinione in merito. Grazie e ciao a tutti!!!
Il Ghenio
-----
E'più oscuro del crepuscolo, é più rosso del sangue,
in nome della pace e della giustizia faccio appello a
tutti i poteri più remoti dell'oscurità, perché mi
aiutino a distruggere i miei nemici e tutti coloro
che saranno tanto sciocchi da ostacolarmi. FULMINE ROSSO!!
(Slayers)
-----

 opinione in merito.
Come posso parlarne male, mi ci sono affezionato. E' però un libro ormai
datato, e non credo che sarei mai riuscito a scrivere grandi cose in c++,
solo con quel libro. E' uno di quei libri che si legge bene, che non si
sofferma troppo sui particolari e si preoccupa di spiegare i concetti
generali. A me è servito per leggere poi lo Stroustrup (non facciamo
paragoni :).
Ciao Fbf.

 Il Ghenio
Anche io l' ho comprato, ma non l' ho trovato eccezionale.
Primo parte dal presupposto che si conosca il C il che non so se sia un bene
o un male al fine di imparare il C++;
Secondo continua a sottolineare le differenze tra C e C++ che secondo me non
fa altro che aumentare la confusione nel lettore visto che con il C++ si
programma "diversamente".
Terzo è pieno di errori che nemmeno l' Errata Corrige individua pienamente.
E' troppo veloce nella spiegazione e quindi secondo me non adatto a coloro
che iniziano da zero.
Potrebbe rivelarsi utile come testo di riferimento quando non ci si ricorda
più un di una determinata caratteristica del linguaggio.
In una scala da 1 a 10 voto 5.
Newsgroup: it.comp.lang.c++
Titolo: Cominciare

Ciao sono un appassionato di informatica e faccio programmi in basic, vb,
pascal ma vorrei imparare il C, ho un libro della McGrawhill che ho iniziato
a leggere e mi sembra molto buono ma ora avrei bisogno di un compilatore
preferibilmente Turbo C++ della Borland sia perchè è quello descritto sul
libro sia per mantenere la un ambiente di sviluppo simile al turbo pascal a
cui sono gia abituato; vorrei sapere se ne esistono delle versioni gratuite
e dove si possono scaricare.

e dove si possono scaricare.
Dal sito borland/inprise e' possibile scaricare gratuitamente il
vecchio compilatore TurboC 2.01 (dos 16 bit) che comunque e'
qualcosa di ragionevole per iniziare a guardare il linguaggio.
Ha un IDE con debugger integrato ma non usa finestre multiple.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Non riesco a trovarlo...
Dove si trova ???

Newsgroup: it.comp.lang.c++
Titolo: Costanti double

Salve a tutti,
devo dichiarare nel mio programma una costante double, e lo Stroustrup
dice testualmente
"Se si desidera una costante in virgola mobile di tipo double, si può
usare il suffisso l o L".
Bene, il g++ interpreta la L come suffisso caratterizzante un long int..
Sbagla il g++ o sbaglia lo Stroustrup? Intanto io utilizzo un semplice .
come suffisso, e tutto funziona.
Grazie in anticipo,
-- 
[ Andrea Spadaccini - a.k.a. Lupino/Lupin85 - Catania - ICQ#: 91528290 ]
[ GPG ID: 5D41ABF0 - key @ 
pgp.mit.edu
 - Slackware 10.1 w/Linux 2.4.22 ]
[ Linux User # 313388 - MAIL: a.spadaccini(at)catania(dot)linux(dot)it ]
[ I know you may not like it, but I'm listening to: damien rice - amie ]

 come suffisso, e tutto funziona.
Che io sappia basta, appunto, indicare il punto decimale per esprimere una
costante double. Esempio:
1 ==> int
1.0 ==> double
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic

 
magari è sbagliato il programma :-)
Cmq _il_ riferimento è un documento ISO
che costa 18$. Ti scarichi un PDF lungo >700 pagine ...
ciao
Leo

 Sbagla il g++ o sbaglia lo Stroustrup?
Sbaglia il libro.
Se si desidera una costante in virgola mobile di tipo *long* double,
si può usare il suffisso l o L".
1L     // long int
1.0L  // long double
-- 
Horst

 Bene, il g++ interpreta la L come suffisso caratterizzante un long int..
1L
ma di 1.0L che dice?
-- 
Adesso quando i medici di turno rifiuteranno di esserti d'aiuto / perchè
venne un polacco ad insegnargli che è più cristiano imporsi col rifiuto
pretenderanno che tu torni indietro/e ti costringeranno a partorire per
poi chiamarlo figlio della colpa / e tu una Maddalena da pentire

 
	double xx0 = 1.0l;
	double xx1 = 1.0L;
	long double xx2 = 1.0l;
	long double xx3 = 1.0L;
	long int xx4 = 1l;
	long int xx5 = 1L;
compila in MSVC7.1 senza problemi.
Ma non userei tale compilatore come riferimento anche
se ultimamente si sta standardizzando
ciao
Leo
Newsgroup: it.comp.lang.c++
Titolo: Parametro con &?

Scusate ma se ho una funzione in cui il tipo del parametro termina con
la &, che cos'è?
int foo(int& n)
{
  // foo
}
io so che ...(int n) mi fa passare una copia del valore, ...(int *n)
un puntatore ad intero, ma ...(int& n) che cos'è?

 un puntatore ad intero, ma ...(int&  n) che cos'è?
:)
http://bytes.com/topic/c/answers/534027-reference-alias
-- 
Due cannibali si trovano per cena e in
confidenza uno dice all'altro:
- Non ce la faccio piu' con mia moglie...
- almeno finisci le patate

 un puntatore ad intero, ma ...(int& n) che cos'č?
Significa che int č passato come riferimento (tipo come sono passati gli
oggetti in java)
in pratica se un parametro č segnato come riferimento, viene passata
alla funzione l'indirizzo del parametro. La funzione usa questo
indirizzo sia per operazioni di lettura che di scrittura, detto ancora
piů in parole poveri, usi l'oggetto originale.

 un puntatore ad intero, ma ...(int& n) che cos'č?
Significa che n č passato come riferimento (tipo come sono passati gli


 la&, che cos'è?
E' un reference, cioè un puntatore "sicuro".
//-----------------------------
// invece di scrivere
int P;
int foo(int *n)
{
*n += 1;
return *n;
};
foo(&P);
// con i reference scrivi
int L;
int zoo(int& n)
{
n += 1;
return n;
};
zoo(L);
//--------------------------------------
Il reference è un puntatore sicuro perché bloccato, cioè che non puoi 
far puntare a qualcos'altro: se scrivi
int *N;
puoi anche assegnare a N l'indirizzo di qualsiasi altra cosa, anche 
completamente diversa da un int, volendo (ma più spesso si fa NON 
volendo, ehm... ^_^)
invece se scrivi
int& N;
sai già che punterà sempre e solo a quella locazione di memoria. Niente 
possibilità di casini. Non devi scrivere più "*N" ma solo "N" perché la 
dereferenziazione è superflua: puoi riferirti solo al valore puntato e 
basta. Invece coi vecchi puntatori potevi modificare il valore puntato 
(*N=4) oppure il valore del puntatore stesso (N=0x00000004) e dovevi 
dire esplicitamente a quale ti riferivi, quindi la notazione serviva per 
forza.

 oggetti in java)
OT, ma doveroso. in Java (e in C...) non *esiste* il concetto di passaggio
per riferimento. Tutti i parametri sono passati per *valore*.
-- 
By ZeD


beh infatti avevo detto tipo per indicare un comportamento che ne poteva 
dare un idea, comunque mi sono espresso male.
Java passa una copia del riferimento a quell'oggetto (l'ogetto sta nello 
heap, la copia del reference sullo stack), C++ passa proprio quel 
riferimento.

 sai già che punterà sempre e solo a quella locazione di memoria.
Fantastico, non l'avevo mai capito bene così, prima!


Newsgroup: it.comp.lang.c++
Titolo: array dinamici

Ciao a tutti,
  come posso creare un array dinamco di oggetti che aumenta la sua
dimensione automaticamente quando inserisco un nuovo oggetto e la diminuisce
quando ne elimino qualcuno?
Grazie

nniikk wrote:

#include <vector>
-- 
Nuoto e me ne frego!

...

Per aumentare automaticamente la dimensione usa std::vector; per
diminuirla devi fare a mano.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: File di JPG GIF ecc...

Ciao a utti.
Sapete se esiste una classe capace di convertire file grafici di vario
formato, nel formato BMP in modo da poterlo visualizzare con le funzioni
GDI??
O meglio, e' possibile disponendo del DC, visualizzare files grafici di
vario formato???
Ciao a tutti.

in pratica a te servono delle classi o funzioni che ti leggano file in
diversi formati... dandoti le bitmap in memoria una volta decompresse (o
decodificate) e pronte per essere visualizzate... se ho capito bene.
ci sono diverse risorse in internet, a seconda del formato file.
forse qualcuno puņ consigliarti delle buone librerie freeware
TobiX

Newsgroup: it.comp.lang.c++
Titolo: Database con C++ Builder

Salve a tutti,
ho creato un database col C++ Builder 3.0.
Usandolo nel mio computer funziona perfettamente.
Se provo a spostare l'applicazione (e i file del database) in un altro
computer mi dice che in pratica non puo' inizializzare il Borland Database
Engine.
Grazie a chiunque mi aiuti a risolvere il problema.
ciao

Domenico Vacirca ha scritto:

Se il tuo prog. utilizza le VCL di Builder per l'accesso ai database allora il
programma per funzionare necessita del BDE (Borland Database Engine) che deve
essere installato sul sistema.
Quindi insieme al programma devi trasportare il BDE (qualche decina di Mb).
Per evitare questa seccatura, se disponi della versione Client/Server di
Builder credo si possa creare ed incapsulare direttamente nel programma il
motore DBase.
ciao by Lucio.
P.S. non sono molto ferrato nella materia spero che qualcun'altro corregga
eventuali fes...ie.

 ciao
Bisogna installare appunto il BDE, che è quello che gestisce i database, anche
sull'altra macchina. Ti consiglio, per minimizzare il numero di files da
copiare, di utilizzare lo Install Shield Express fornito con BCB, e creare
un setup del programma.
Saluti
Paolo

Grazie mille per le risposte :)

Newsgroup: it.comp.lang.c++
Titolo: Overload di operatori

Dunque, ho una classe gestisce un'array bidimensionale (una matrice,
diciamo, 4x4). Ora, vorrei aver la possibilità di scrivere
CMatrix     mat;
....
float    val = mat[1][1]
Come faccio a farlo? So come si implementa l'overload dell'operatore [],
ma per quanto riguarda questa situazione?
Grazie.

 ma per quanto riguarda questa situazione?
Puoi ottenere l'effetto desiderato definendo un operator[] che restituisca
un qualcosa a cui sia nuovamente applicabile operator[]. Un'idea è
restituire un puntatore, un'idea migliore è restituire un reference a un
vector<T>. Ripropongo un frammento di codice che ho postato alcuni giorni
fa:
 template< class T >
 class matrix
 {
    std::vector< std::vector<T> > data;
    public:
    matrix( int x, int y, const T& val = T() ) :
           data( x, std::vector<T>( y,val ) ) { };
    std::vector<T>& operator[](int i) { return data[ i ]; }
 };      
 matrix<float>  mat(10,10);
 float val = mat[1][1];
Max

La risposta e` gia` nelle faq (
www.programmazione.it
)
Paolo
Newsgroup: it.comp.lang.c++
Titolo: Aiuto coda e albero

Ho un albero cosě fatto:
typedef int tipoelem;
typedef struct cella *nodo;
struct cella
{  tipoelem elemento;
    nodo figlio;
    nodo fratello;
    nodo genitore;
};
class Albero
{
    private:
        nodo alberoN;
.
.
.
[cut]
e una coda
typedef int tipoelem;
struct cella {
    tipoelem elemento;
    struct cella *successivo;
};
class Coda
{
    private:
        typedef struct coda{
            cella *testa;
            cella *fondo;
        };
        coda Q;
.
.
.
[cut]
io vorrei sapere come faccio per mettere come elemento della coda il
puntatore ad un nodo dell'albero?

 puntatore ad un nodo dell'albero?
Cosi' com'e', per quanto la vedo io, non lo puoi fare. La struct cella
di un albero e' diversa dalla struct cella di una lista (e tra l'altro
non hanno nulla a che vedere l'una con l'altra come struttura), indi non
puoi fare un cast da albero::cella a lista::cella. L'unica sarebbe di
fare una struct cella base e di derivare da questa le specializzazioni
per l'albero e la lista.
Ex.
struct cella{
   tipoelem element;
   nodo nextNode;
   };
// il fratello e' il nodo nextNode delle struct padre
struct cellaAlbero : public cella{
   nodo figlio;
   nodo genitore;
   };
struct cellaLista : public cella{
   int ID;
   };
cosi' facendo puoi inserire una cella-albero in una cella-lista facendo
un semplicissimo cast a cella.
Ex.
void lista::insert(cellaLista * node){
   //normale inserimento di una cella-lista in una lista
   //...
   }
void lista::insert(cella * node){
   nodo newNode;
   newNode->element = node->element;
   newNode->nextNode = node->nextNode;
   newNode->ID = 0;
   insert(newNode);
   }
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c++
Titolo: I file in C++

Come mai con questo programmino nel file output.txt sono eliminati
tutti gli "a capo"?
#include <fstream.h>
#include <iostream.h>
void FILE_copy(char *path_in, char *path_out){
	fstream Fin,Fout;
	Fin.open(path_in,ios::in);
	Fout.open(path_out,ios::out);
	char c;
	while (!Fin.eof()){Fin>>c;if(!Fin.eof())Fout<<c;}
	Fin.close();
	Fout.close();
};
int main(void){
	FILE_copy("input.txt","output.txt");
	return(0);
};

 ha scritto nel messaggio
news:9clp9tcq8au52t7eg...@4ax.com...

Fout<<c<<endl ;
endl inserts a newline character into the output sequence and flush the
output buffer.
---
Sergio Bianchi

 output buffer.
Vabbe, ma cosi' la riga
CIAO
diventa
C
I
A
O
che non credo sia quello che voglia...
Bow-wow Killer

 ha scritto nel messaggio
news:vG8n6.31801$Y93.7...@news.infostrada.it...

Si, andavo troppo di fretta (come al solito) e ho letto superficialmente e
male interpretato il problema.
Consiglierei di usare il modo binario.
Fin.open(path_in,ios::in | binary);
Fout.open(path_out,ios::out | binary);
---
Sergio Bianchi
Newsgroup: it.comp.lang.c++
Titolo: Allocazione di grandi quantità di dati...

qualcuno sa dirmi se
č possibile allocare piů di 8.3 MegaByte di memoria statica (in
esadecimale pari a 0x7FFFFF) in un programma c che utilizza come
compilatore il GCC ver 4.1?  La piattaforma č LinuxMandriva (la
versione non la ricordo ...)
Ho provato a definire un array del tipo
...
char buf[9000000]; // array di caratteri con 9 milioni di elementi
...
la compilazione ed il link sono OK, ma al momento dell'esecuzione il
programma mi esce con un errore di "segmentation fault" !!!
Grazie in anticipo a chi puň darmi qualche info.

 
Ciao,
io sinceramente non lo so ma penso tuttavia che dipenda da diverse cose 
come ad esempio dal compilatore e dal sistema operativo, in particolare 
dalla memoria (stack) che viene allocata per il tuo programma al momento 
dell'esecuzione...
Una volta sotto Windows avevo avuto un problema simile (era un algoritmo 
ricorsivo) e mi è bastato aumentare la memoria che Windows riserva allo 
stack-pointer del programma in esecuzione.

stack-pointer del programma in esecuzione.
... immagino però che hai impostato qualche parametro sul linker, o
hai fatto qualcosa al di fuori dell'ambiente di sviluppo?

 char buf[9000000]; // array di caratteri con 9 milioni di elementi
Se la citata riga e' all'interno di una funzione o di una struttura, per 
essere statica deve diventare:
static char buf[9000000];
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 hai fatto qualcosa al di fuori dell'ambiente di sviluppo?
Si, ora non ricordo cosa ho scritto ma l'ho trovata nella documentazione 
del linker!
E' corretto che il compilatore non segnali né errori né warning.
ciao.

 programma mi esce con un errore di "segmentation fault" !!!
Come ti è stato detto da altri, è un problema di dimensione dello stack.
Sinceramente, visto che non hai necessità particolari e che l'accesso alla
memoria ha un tempo costante indipendentemente dalla posizione, ti consiglio
l'approccio dinamico.
se ti serve una struttra dati statica, puoi dichiarare un puntatore:
static char* p_buf;
che poi dimensionerai a tuo piacere (l'heap non ha limiti).
Newsgroup: it.comp.lang.c++
Titolo: Overload di ==

Sullo Stroustruper leggo questa ridefinizione di ==:
(§10.3.3)
bool operator==(Date a, Date b)
{ 
   return a.day()==b.day() &&a.month()==b.month()&&a.year()==b.year();
};
Il problema e' che se io ridefinisco == a quella maniera il
compilatore dice che andrebbe ridefinito come 
bool operator==(Date a).
Sbaglia lo Stroustruper? O (più probabile, anzi sicuro) sbaglio io? E
dove sbaglio?
Errori riportati:
Microsoft C++:   binary 'operator ==' has too many parameters
Borland C++ 5.5:    'Date::operator ==(Date,Date)' must be declared
with one parameter

 dove sbaglio?
Ha ragione BS (ma va!?;-) Il fatto è che l'operator== a cui si riferisce è
una funzione esterna, non una funzione membro, come suppongo sia quella che
hai tentato di implementare tu. Nella funzione membro viene già passato il
puntatore this per referenziare il membro sinistro dell'operatore, per cui è
necessario passare solo il membro destro, mentre una funzione esterna deve
prendere tutti e due i membri come parametri.
ciao,
Cecco
---------
Visit: 
www.sourceforge.net/projects/dlab
Home Page: 
http://dlab.sourceforge.net/
Dlab-developer mailing list
https://lists.sourceforge.net/lists/listinfo/dlab-developer

>Ha ragione BS (ma va!?;-)
Non ne avevo dubbio, (io ho studiato l'overload da poco), ma non
risucivo a darmi una risposta valida. Grazie.

Newsgroup: it.comp.lang.c++
Titolo: cgi e C++

Scusate sono da poco entrato nel mondo Linux e C++.
Sto cercando di scrivere un cgi in C++, ho difficolta' nel come ottenere la
creazione di un file di testo nella dir corrente senza specificare l'intero
percorso con il gcc sotto linux, nessun problema per Win.
Qualcuno potrebbe confermarmi inoltre questa intuizione?
se chiamo un cgi scritto in c++ da una pagina html, per otttenere una pagina
html di risposta basta un "cout" che stampi testo con i tag html senza
necessita' di scrivere fisicamente il file *.html.
Ringrazio tutti e scusate la banalita'.

 necessita' di scrivere fisicamente il file *.html.
Si, l'intuizione č giusta! Ricorda perň che devi mandare l'header http
al browser, per esempio:
#v+
<code>
#include <stdio.h>
int main()
{
        printf("Content-type: text/html\n\n");
        printf("<big>cgi 1</big>\n");
        return 0;
}
</code>
#v-
p.s. lo so che questo č C e non C++, ma pure io sto imparando il C++
     e  per  ora  non  me  la sento  di  scrivere  vaccate  in  C++,
     preferisco fare ancora vaccate in C :)
-- 
Vanni Brutto
| email 
za...@nofesso.libero.it
      |
| irc nick VanniB   |   ICQ 18526701 |
--- rimuovi nofesso per rispondere ---
---PC powered by Linux kernel 2.4.3---
Il parente piů  simpatico č quello che
č  solito mandare  una cartolina  ogni
tanto da un paese lontanissimo.
Newsgroup: it.comp.lang.c++
Titolo: turbo c++ prima volta

scusate,
stavo provando per la prima volta il c++ con
turbo c++.
ho compilato un semplice file:
// commento
#include <iostream.h>
// commento
/* commento */
/*
commento
*/
main()
{
// saluto
cout << "ciao!" ;
return 0;
}
poi ho copilato e lincato.
ho ottenuto un file.exe che se cerco di lanciarlo al di fuori di tc mi da il
seguente messaggio di errore:
This example program can only be run
from within the IDE
perchč?
saluti
elena mattioli

...
Anche a me è capitato la stessa cosa e mi è stato spiegato che il
compilatore non è completo essendo una versione light.
CIAOOOOOOOO

...


 from within the IDE
Sicuramente hai usato una versione dimostrativa o comunque di prova del
Turbo C++. Tali versioni di prova (Try & Buy) hanno il limite di non poter
compilare applicazioni distribuibili al di fuori dell'IDE del Turbo C++.
Comprati il programma originale (per i prezzi dai uno sguardo al sito
italiano di Borland 
http://www.borland.it
), in questa maniera eviterai
questo limite e tanti altri.
Bye.
-- 
Jo Parrello - OWL/C++ Programmer (
jopa...@tin.it
)
http://space.tin.it/computer/giparrel

from within the IDE
É un deliberato limite imposto da Borland alla "learning edition"
di Turbo C++, allo scopo di limitarne l'utilitá e obbligare la gente
a comprarsi comunque un compilatore piú caro.
Alex

naturalmente non trovo nulla in rete  di non light?
Ma certo, vai a 
http://www.cygnus.com
 per cominciare, e segui
i vari link: egcs é l'ultima versione (abbastanza vicina allo standard
C++) del compilatore gratuito gcc, ce ne sono versioni per Unix,
Windows a 32 bit (consiglio di usare i port di Mumit Khan per
mingw32, o al limite per gnuwin32, ambiente in pratica di quasi
emulazione Unix -- un po' pesante, a differenza di mingw32), e
anche per Dos (DJGPP).  L'unico neo é che sono pacchetti
grossi da scaricare -- se hai un'ottima connessione alla rete non
importa, se no merita cercare fra i numeri usati di "IoProgrammo"
e altre simili riviste+CDROM, sui loro CDROM trovi spesso delle
versioni di gcc (magari non aggiornatissime).
Alex

Newsgroup: it.comp.lang.c++
Titolo: porting unix --> windows

Salve,
sto facendo il porting di un applicativo nato su  unix verso windows.
Una routine di base di interfaccia col sistema operativo usa in unix i
seguenti
unistd.h
curses.h
term.h
termio.h
prima di mettere pesantemente le mani sulla routine,, mi chiedevo se esiste
una versione
dei suddetti .h usabile su windows (con tutte le limitazioni del caso).
Ne sapete niente?
Grazie
Vincenzo

 Ne sapete niente?
cygwin, usa una dll di emulazione dei servizi Unix su win
Newsgroup: it.comp.lang.c++
Titolo: Classi in C [Non sono diventato scemo...]

Esiste la possibilita` di scrivere un codice C++ contenente la dichiarazione
di alcune classi/struct ( e delle funzioni che le utilizzano pesantemente) per poi compilarlo
in C++ e fatto questo utilizzare le strutture del prog. C++ in un programma C (ovviamente
con delle restrizioni operative) ?
Se si vale la pena farlo per incrementare le prestazioni del programma?
In pratica: la perdita di prestazioni tra un codice C ed uno C++ giustifica il passaggio di
linguaggio? Se si, in quali casi e` piu` sentito questo calo?
-- 
Gargamella ->REMOVE *dinkyisland* from address to mail me!

 
Di un po', non ti conviene scrivere tutto in C++ e chiamare delle funzioni
esterne 
scritte in C?
Se hai problemi di Performance li risolvi con il C, poi dichiari le
funzioni in C cosi:
extern "C" {
	void FaiQuesto();
	void FaiQuello();
}
Inoltre non esiste :
extern "C++" { .....
Quindi non puoi fare quello che vuoi fare (... almeno nei limiti della
legalita')

Newsgroup: it.comp.lang.c++
Titolo: consiglio libri cercasi

Qualcuno sa dirmi se conosce un buon libro in Italiano sulla
programmazione per Windows con Visual C++ 5.0? Vorrei fare un programma
per la gestione del fantacalcio (non mi sembra difficile), ma volevo che
fosse un'applicazione Windows, che va di moda... :-)
Grazie in anticipo e vi prego di postare una risposta anche al mio
indirizzo e-mail, in quanto sono costretto a collegarmi dalla biblioteca
e spesso perdo le risposte.
Bruno TB
veg...@yahoo.com

e spesso perdo le risposte.
OK, fatto.
Alex
Newsgroup: it.comp.lang.c++
Titolo: C & Asm

Ciao a tutti... e grazie per i precedenti aiuti che mi avete dato... e
perchè no??? anche per quelli futuri!!! Vorrei sapere come si fa a usare
comandi assembler in cc di Linux... per esempio come si fa a fare mox ax, 5
???
Vi ringrazio anticipatamente...
    Lord Spawn

 fare mox ax, 5 ???
volatile __asm__ ("movw $5, %ax" : :);
il resto postando su news:it.comp.os.linux.development

 ha scritto nel messaggio
news:5422840.Y...@tin.it...

La keyword č asm (prevista dallo Standard).
asm(string-literal);
dove l'interpretazione della stringa passata ad asm č
implementation defined.
Saluti   Manlio Perillo

Newsgroup: it.comp.lang.c++
Titolo: comandi grafici.

sono agli albori dell'iniziare a programmare e credo che un buon
incoraggiamento all'apprendimento di questa disciplina sia il poter creare
programmini, sě da newbbio, ma che abbiano perň un ritorno grafico.
Credo infatti che in poco tempo programmi sui numeri (come "numero megico",
o elencare in numeri primi etc..), nn diano le dovute motivazioni al pivello
della programmazione.
Dunque sapreste indicarmi come fare per cominciare a ideare programmini con
uno scopo grafico, cioč come ideare semplici disegnini dinamici attraverso
il C++?
serve forse qlc libreria particolare? esiste qlc tutorial o guida?
Cmq niente di complesso, voglio solo cominciare ad accendere qlc pixel su
schermo, ma essendo nuovissimo nn so da dove cominciare.
Oppure fare questo in c++ č piů complesso di quello che credo, di
conseguenza nn si addice ad un principiante?
Grazie per qualsiasi informazione!
Zey.

 serve forse qlc libreria particolare? esiste qlc tutorial o guida?
<doveroso>
premesso che sei OT su questo NG perche' e' ammesso
parlare solo di C++ standard (che non prevede nulla di
grafica),
</doveroso>
ti consiglio di dare un'occhiata a SDL:
http://www.libsdl.org
una completa ma semplice libreria per la grafica e non solo!
-- 
Simone.

Comincia con il c ,c++,c++ e grafica.

 Comincia con il c ,c++,c++ e grafica.
non credo proprio che serva il c, per imparare il c++...
anzi... molto meglio imparare da subito il c++...
(si evitano tanti problemi e vecchi retaggi del c)
e poi avere qualcosa a video puo' essere (per diverse
persone) uno stimolo in piu' a continuare...  :-)
-- 
Simone.

 della programmazione.
Credi male. Non hai idea di quante cose interessanti si possano fare
anche solo con la libreria standard (un programma che gioca a dama, un
programma che minimizza un automa a stati finiti... che so io). 
Poi se per te e` piu` interessante accendere e spegnere pixel, scegli
framework e sistema operativo e chiedi sul gruppo adeguato.
Che in nessun caso e` it.comp.lang.c++
-- 
[ RiK0                                ]
[ Go away! The internet is full!      ]
[ Non credo negli schemi non vincenti ]
Newsgroup: it.comp.lang.c++
Titolo: newbie del c++

Salve a tutti!
    Ho appena scaricato il Borland C++ compiler...riesco a farlo funzionare,
ma solo se i file che creo si trovano nella directory BIN (quella dove sta
il compilatore)...mi sapreste dire se ce un modo per compilare in una
cartella diversa, ad esempio una cartella dedicata al programma che
sviluppo.
grazie a tutti!


http://groups.google.it/groups?q=+%22Devi+impostare+le+variabili+di+ambiente%22+author:Gerolamo&hl=it&lr=&ie=UTF-8&oe=UTF-8&selm=i57f8.37430%24fa5.12025
44%
40twister2.libero.it
&rnum=1

Newsgroup: it.comp.lang.c++
Titolo: TimerProc non scatta!

Salve,
ho un problemino: non riuscivo a capire come mai
la callback function TimerProc non scattasse dopo la SetTimer, e
leggendo l'MSDN ho visto che l'azione di 'dispatch messages' va eseguita
dal
thread stesso in cui si esegue la chiamata.
Brevemente, vi spiego:
Ho un'applicazione server socket async telefonica, le funzioni di Timer
vengono startate/stoppate nel thread relativo alla connessione client,
mentre
tutte le funzioni telefoniche sono globali in quanto lavorano per linea
telefonica e gestite da una funzione 'Handler' che lavora appunto per
linea.
Mi succede che se starto o stoppo nel thread di connessione tutto mi va
bene, ma se devo startare un timer in seguito ad esempio ad una caduta
linea dalle
funzioni (gloabli) telefoniche il timer ovviamente non scatta.
Sapete come posso risolvere questo problema???
grazie
ciao
tommaso
--
Inviato il gio 10 mag 2001 14:05:17 CEST da 62.110.223.218
[62.110.223.218]
http://www.neuromante.net/

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

aspetti specifici di particolari implementazioni. 
Ehi !!! ma che cos'ha il messaggio del GCN che non va ? ;))
--
Walkie...@Libero.It (ICQ# 8143647)

 Ehi !!! ma che cos'ha il messaggio del GCN che non va ? ;))
Il fatto che la gente non lo legge? Per il resto non molto, dal momento
che il manifesto lo scrissi io a suo tempo :-)
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: superenalotto

Ciao a tutti,
devo realizzare un piccolo programmino in c che faccia le seguenti cose?
dati in input n numeri compresi da 1 a 90 si determini il numero delle
combinazioni ( lo sviluppo integrale in sestine).
visualizzare le sestine cosě calcolate.
potete aiutarmi ?
Rocco

 Rocco
a) mi sa tanto di compito-per-casa che vuoi che qualcun altro ti 
risolva. Scorretto ed inutile.
b) anche se non fosse, generalmente si aiuta chi mostra almeno di 
essersi sforzato in un tentativo. Perche' dovrei fare io (con "io" 
soggetto generale) quello che dovresti fare tu?
-- 
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

 soggetto generale) quello che dovresti fare tu?
c) In questo newsgroup si tratta di C++ e non di C.
Ciao,
Nicola

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

Ho una funzione che alloca dei ptr per uso locale, quindi ho pensato di 
usare degli auto_ptr, ma mi pare che questi supportino solo oggetti e 
non array di oggetti. E' cosě?
Kiuhnm

 non array di oggetti. E' così?
Esatto. Credo che l'idea sia che per emulare un ipotetico auto_array si
puo' usare un vector preallocato alla dimensione fissata.
Ciao,
Nicola

 puo' usare un vector preallocato alla dimensione fissata.
Sto realizzando una parte di codice che richiede la massima efficienza 
quindi non so se mi conviene sostituire degli array con dei vector. 
Dovrei fare un test tra array e vector per vedere se veramente le 
prestazioni si equivalgano.
Comunque ci vogliono 5 secondi a scrivere una classe auto_array.
Kiuhnm

 quindi non so se mi conviene sostituire degli array con dei vector.
Dal momento che i tuoi array sono allocati dinamicamente in teoria se
eviti riallocazioni dovrebbe essere la stessa cosa.
Ciao,
Nicola

 Comunque ci vogliono 5 secondi a scrivere una classe auto_array.
E ancor meno a usare boost::scoped_array o boost::shared_array ;-)
Effettivamente in boost non c'e' auto_array, ma se non ti serve la "sequence
of owners"...
Ciao,
Francesco.

 E ancor meno a usare boost::scoped_array o boost::shared_array ;-)
Ho deciso di non usare la libreria boost. Alla fine eliminerņ 
probabilmente anche i riferimenti alla STL.
Kiuhnm