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

stavo leggendo il "thinking in c++"..
.....ma il namespace anonimo non e` affatto un sostituto dello "static"
alla "C"!!!
se in un file .h devo mettere scrivere l'implementazione di alcune
funzioni friend o di alcuni metodi di una classe esternamente ad essa,
DEVO per forza usare la parola chiave "static" (o al limite "inline")
per evitare problemi in fase di linkaggio....
ed io che avevo gia` modificato tutti i miei sorgenti mettendo tanti bei
namespace { ..... }....
esempio di file .h: 
#ifndef CIAO
#define CIAO
struct Vector2d;
struct Vector3d {
	double x, y, z;
 
	Vector3d(const Vector2d &v, double _z ); // non posso mettere qua
l'implementazione perche' Vector2d non e` ancora stato definito...
};
struct Vector2d {
	double x, y;
	Vector2d(const Vector3d &v ) : x(v.x), y(v.y) {}
};
// ecco le linee incriminate, cosi` funziona (anche con inline al posto
di static):
static Vector3d::Vector3d(const Vector2d &v, double _z ) : x(v.x),
y(v.y), z(_z) {}
// cosi` invece da` errori di linkaggio,  ma alla luce del "thinking in
c++" sembra la sintassi piu` corretta
namespace {
	Vector3d::Vector3d(const Vector2d &v, double _z ) : x(v.x), y(v.y),
z(_z) {}
}
#ednif /* CIAO */
qualcuno si e` imbattuto in problemi simili??
cosa ne devo dedurre: che in C++ non e` possibile soppiantare
completamente le funzioni static alla "C"??
boh,
grazie
andrea

completamente le funzioni static alla "C"??
Le funzioni "static" sono soppiantate. Non lo sono le variabili
static locali delle funzioni.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 static locali delle funzioni.
si`, e` vero, cosi come i membri static delle classi, ok.
ciao e grazie!
andrea

 (non per tutti i metodi ha senso usare "inline")
Non per essere maniaci delle nomenclature,ma quando un nome non e' dichiarato
all'interno della classe, sicuramente non fara' parte della classe....
E' la definizione che puo' stare fuori dalla classe.
--
Ivan Molella
__LINUX__ the choice of the __GNU__ generation
icq# 97960484

E' la definizione che puo' stare fuori dalla classe.
Mi era scappato un dichiarare invece di definire :)


 Vector.cpp ed ho cercato di fare tutto nel .h.
Se i costruttori dovrebbero essere espansi inline per l'efficienza
del programma, allora vanno dichiarati inline (e non static).
	Mauro

 L'unica cosa che gli serve e' la definizione della funzione.
boh, quanto ho scritto si riferiva alla mia esperienza fatta usando il
SAS C/C++ 7.0, qualche anno fa. ora uso il g++ e non so esattamente come
funzionino le cose.
ciao
andrea
Newsgroup: it.comp.lang.c++
Titolo: debug con argc e argv

Ciao,
esiste un modo per dare dei valori a questi argomenti dall'interno
dell'ambiente di sviluppo, in modo da poter fare il debug, senza dover fare
alla cieca dalla riga di comando?
Ciao
Domenico

 alla cieca dalla riga di comando?
Dipende dall'ambiente di sviluppo :-)
...per VC++ c'e'.
(Non conosco altri compilatori)

 (Non conosco altri compilatori)
io sto usando il turbo c 4.5(credo)
ho provatoo il visual c++ ma provando a fare il debugh mi chiedeva di
apprire un nuovo progetto e poi mi dava errore.
Ciao
Domenico

 apprire un nuovo progetto e poi mi dava errore.
...Non so che errore ti desse... ma la mia _impressione_ e' che tu debba 
studiare un po' meglio VC++ (ammesso che lo voglia usare).
Cmq, ci sono tanti altri compilatori C++ ...

 ha
scritto:

Benedetti ragazzi... Ma perchč non usate i compilatori GCC e il debugger
GDB?
In GDB fai cosě:
 set args [lista argomenti] [invio]
Buon divertimento.
FabioMDF
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha
scritto:

Benedetti ragazzi... Ma perchč non usate i compilatori GCC e il debugger


 GDB?
Personalmente, perche' non posso fare a meno di un bell'IDE grafico, 
integrato, con tante belle, ricche e utili, opzioni come quelle offferte 
da Microsoft Visual C++.
...se ci sono IDE di tale livello per C++ anche per GNU/Linux, mi 
farebbe piacere venirne a conoscenza (non ho pregiudizi).
Bye
Dan


Mah, io uso kdevelop che mi permette anche di scrivere Ada,Python e
GNU/Assembly oltre ad altre decine di linguaggi mai visti e mi piace
abbastanza. Certo non mi fa impazzire di gioia ma č divertente e funzionale.
Non lo so comparare a MS Visual C++, perchč non conosco quest'ultimo.
Mi bastano e mi piacciono le funzioni di pretty-printing, lo stile
personalizzabile (colori, grassetto, corsivo, sottolineato) dei caratteri a
seconda che siano keywords, strings, functions etc, la documentazione
online, l'autocompletamento e infine il fatto che ti mostra il tipo dei
parametri di una funzione documentata appena ne scrivi il nome e apri la
parentesi di sinistra.
Non mi piace il fatto che spesso (sei/otto volte al mese, lavorando circa 6
ore al giorno) va in crash. Assolutamente non mi piace 'sta cosa. Comunque
al 90% i problemi sono legati alla navigazione della doumentazione e
dovrebbero presto essere risolti.
Buon lavoro,


 Buon lavoro
Anche a te
Dan


 


, 
fm...@nomailplease.it
 says...
OK allora KDevelop deve essere davvero ben fatto...!
Newsgroup: it.comp.lang.c++
Titolo: Inizi nel programmare in C++

Ciao a tutti!
Sono un giovane programmatore che da tempo crea i suoi programmi in
vari linguaggi: GW-Basic e QuickBasic, TurboPascal e Pascal, Visual
Basic xx.xx per Windows e per DOS.
Adesso, invece, vorrei imparare a programmare in C++ (tra l'altro sto
imparando ad usare Java, che è basato su una via di mezzo tra il C e
il C++, per creare applet per le pagine web).
Ho visto il sito di 
www.programmazione.it
 alla sezione del C++ e ho
prelevato la guida in formato *.html (utilissima e <gratis>) curata da
Paolo Marotta, ma adesso non so che fare: infatti ho notato che ci
sono differenze tra Microsoft Visual C++ per Windows e altri
compilatori che non conosco, senza parlare degli standard di stesura
del codice. Quale compilatore devo prelevare ed usare? Esistono altri
buoni siti che trattano questo linguaggio?
Ah, dimenticavo! Se qualcuno di voi può aiutarmi è anche invitato a
darmi dei consigli: eviterò così di imbattermi in problemi "strani"
per un aspirante programmatore del C++.
Ciao!
Vi ringrazio in anticipo.
P.S: Se invierò messaggi già postati perdonatemi!

 ha scritto nel messaggio
news:3aca0332...@News.CIS.DFN.DE...


Perdona il sarcasmo, ma quando a scuola hanno spiegato il "." eri
assente?
Ciao,
Nicola

assente?
No, era presente e triplicamente impegnato (...)
8)

hmmmmm .... ma quando sei nato c'eri?

hmmmmm .... ma quando sei nato c'eri?
Che permaloso...

Si. E sei o sette anni dopo mi hanno insegnato la differenza tra punto e
punto esclamativo.
Ciao,
Nicola

 complessi!! 
Soprattutto le tecniche di sviluppo tipiche di C++ e Java sono molto
piu' differenziate di quanto le somiglianze sintattiche non facciano
pensare.
Ciao,
Nicola

 punto esclamativo.
LOL
Sottilissima!
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556
Newsgroup: it.comp.lang.c++
Titolo: Manuale Apogeo..





Ragazzi, sapete dirmi com'è la guida completa al 
Visual C++ 6 della Apogeo ? Se non vi ha convinto sapreste consigliarmene un 
altro ? Grazie.



 wrote in message
news:000201c0c6c2$43c34680$6734d5d5@belva600...


Newsgroup: it.comp.lang.c++
Titolo: Scrittura di un float

Ciao a tutti.
Ho necessità di stampare su schermo un float. Tipo se voglio stampare 
(1/2) che è uguale a 0,5 mi stampa 0. Come faccio a far stampare 0,5.
La stessa cosa avviene se faccio
float a = 1/2;
cout << a << endl;
e mi stampa ancora zero. Come devo fare?
Ciao a tutti!!
Grazie della risposta!!!!

 e mi stampa ancora zero. Come devo fare?
Se scrivi 1/2 viene fatta la divisione tra interi. Bisogna che almeno 
uno dei due operandi sia un float. Ad esempio puoi scrivere 1.0/2.0
E.

?manu* ha scritto:

per la precisione, 1.0 e 2.0 sono entrambi double, 1.0f e 2.0f sono float

Newsgroup: it.comp.lang.c++
Titolo: Visualizzare una sola finestra di dialog.

Salve ragazzi,
Sto realizzando un'applicazione tipo il paint. Ho definito una
finestra dialog non modale che contiene alcuni strumenti per il
disegno che viene visualizzata tramite un comando di menů.
Io vorrei evitare che vengano visualizzate piů dialog quando viene
premuto piů volte la voce del menů.
In altre parole, come posso fare per avere attiva esclusivamente una
finestra dialog per volta ?
Ciao e grazie.


Definisci un puntatore alla classe che rappresenta la finestra e lo
inizializzi a zero. Quando viene premuto il bottone se il puntatore e'
zero crei la finestra, altrimenti ne fai il raise o quel che vuoi. Per
eventuali dettagli chiedi su un newsgroup specifico per il tuo ambiente.
Ciao,
Nicola

 Nicola
Grazie Nicola, ha funzioanto,
ma non riesco a catturare l'evento di chiusura del dialog in modo tale
da settare di nuovo a zero il puntatore per potere riaprire la
finestra successivamente.
In altre parole, ora riesco a visualizzare un solo dialog per volta,
ma quando questo viene chiuso non ho più possibilità di riaprirlo.
Hai qualche suggerimento ??
Grazie mille,
Ciao
Raffaele

 Hai qualche suggerimento ??
Questo dipende dal funzionamento della libreria che usi. Ti conviene
chiedere su un newsgroup specifico.
Ciao,
Nicola

Nicola Musatti <Nicola....@ObjectWay.it> wrote in message news:<3D10B384...@ObjectWay.it>...

Uso Visual C++ con le MFC.
Conosci qualche newsgroup specifico ?
Ciao.
Raffaele

 Raffaele
it.comp.programmare.win32
microsoft.public.vc.mfc
comp.os.ms-windows.programmer.win32
se poi sai anche decriptare ideogrammi :
japan.comp.lang.visual-c++
e chiedi cosa si prova a stare fuori dal mondiale come noi, mentre i loro
cugini coreani vanno avanti a colpi di Hyundai regalate ad arbitri
cellulitici anche sulle guance (serse Cosmi)
Maurus
Newsgroup: it.comp.lang.c++
Titolo: [OT] implementere una funzione di libreria

Nell' header <stdlib.h> manca la funzione ultoa(), che memorizza in un 'char
* ' la rappresentazione in binario di un 'long' (compilatore g++ sotto
linux, red hat).
Siccome a lavoro praticamente finito non ho voglia di cambiare compilatore e
SO, qualcuno conosce l'implementazione di questa funzione?
Ciao e grazie Gianni.
P.S.: volevo postare contemporaneamente anche su it.comp.lang.c+, saerebbe
stato corretto farlo? (per la netiquette intendo....)
-- 
Posted from 
c000-h010.c000.muc.cp.net
 [209.228.29.34] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

SO, qualcuno conosce l'implementazione di questa funzione?
itoa() (estratta dalle librerie DJGPP) penso vada bene lo stesso...
/* Copyright (C) 1995 DJ Delorie, see 
COPYING.DJ
 for details */
#include <errno.h>
#include <stdlib.h>
char *itoa(int value, char *string, int radix)
{
  char tmp[33];
  char *tp = tmp;
  int i;
  unsigned v;
  int sign;
  char *sp;
  if (radix > 36 || radix <= 1)
  {
    errno = EDOM;
    return 0;
  }
  sign = (radix == 10 && value < 0);
  if (sign)
    v = -value;
  else
    v = (unsigned)value;
  while (v || tp == tmp)
  {
    i = v % radix;
    v = v / radix;
    if (i < 10)
      *tp++ = i+'0';
    else
      *tp++ = i + 'a' - 10;
  }
  if (string == 0)
    string = (char *)malloc((tp-tmp)+sign+1);
  sp = string;
  if (sign)
    *sp++ = '-';
  while (tp > tmp)
    *sp++ = *--tp;
  *sp = 0;
  return string;
}
--
Andrea Laforgia (ICQ 87230455)

 itoa() (estratta dalle librerie DJGPP) penso vada bene lo stesso...
[...]
credo che ultoa( ) converda unsigned int in char*; per cui consiglio
char            buf[22];// anche su long da 64 bit il numero e' minore di
                        // 20 caratteri
unsigned long   ul;
sprintf( buf,"%uld",ul );

sprintf( buf,"%uld",ul );
sprintf( buf,"%lu",ul );
--
Andrea Laforgia (ICQ 87230455)
"A C program's trick is sometimes a C++ program's trap"
                                          [S.B.Lippman]
Newsgroup: it.comp.lang.c++
Titolo: Aiutino

Ringrazio anticipatamente tutti coloro che mi aiuteranno.
Vorrei scrivere una piccola applicazione che testi all'avvio la presenza di
altre istanze in esecuzione dello stesso eseguibile. Sono graditi esempi in
VisualC++ o BorlandC++.
Ho gia' provato creando file temporanei, valori nel registro, ma volevo
utilizzare un sistema + pulito.
Grazie.


Questo non č il luogo giusto per queste domande comunque.......
Sotto windowze con il VC++ ti sono di aiuto le seguenti:
(void)CreateMutex(0, true, "__YOUR_PERSONAL_ID__");
 if (GetLastError() == ERROR_ALREADY_EXISTS) {
     //Qui devi gestire il fatto che hai due istanze.
 }

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

Ciao la mia č una domanda stupidissima,
data una
  struct 
  {
     string nome;
     int    eta;
  }ANA,d_clienti;
 Una volta che gli ho passato i dati
 d_clienti.nome="MARIO";
 d_clienti.eta=10;
 
 nel caso voglia ripulirla interamente come si fa?
 attualmente uso:
 d_clienti.nome=""; 
 Ma se ho una struttura con 20/30 elementi??????
Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Dipende da cosa intendi per ripulire.
In genere si utilizza la funzione
    memset(d_clienti, 0, sizeof(d_clienti));
questo assicura che tutti gli elementi vengano settati a 0, cio' va bene su
molte piattaforme se la struttura contiene tipi interi o puntatori.
Il tuo caso e' un po' insolito perche' hai messo un oggetto all'interno di
una struttura: in questo caso ti consiglierei di convertire la struttura in
classe ed aggiungere un opportuno metodo di reset degli attributi.

 molte piattaforme se la struttura contiene tipi interi o puntatori.
Attento: questa non resetta i membri a zero, ma imposta tutti i loro
byte a 0. Puň sembrare la stessa cosa, ma non č cosě: per un numero
reale, ad esempio, quattro byte di valore 0 non sono il numero 0.0

 classe ed aggiungere un opportuno metodo di reset degli attributi.
struct e class sono la stessa cosa; cambia solo il default dei
meccanismi di accesso ai membri e alle classi base.
Ciao,
Nicola

 Nicola
Non sono la stessa cosa, le classi sono molto piu versatili e potenti!

Non sono la stessa cosa, le classi sono molto piu versatili e potenti!
Falso, le struct e le classi sono esattamente la stessa cosa, eccetto
la visibilità, ciò che puoi fare con una class lo puoi fare anche con
una struct.
-- 
Marco Barisione (ICQ 84277092)

 ha scritto nel messaggio
news:mrothu0svpmju3qhk...@4ax.com...

si puo anche ereditare?

si puo anche ereditare?
Certo una classe *è* una struct eccetto per la visibilità di default.


 ha scritto nel messaggio
news:ojpthug9j537mcpgs...@4ax.com...

Newsgroup: it.comp.lang.c++
Titolo: qsort - per C++

Qualcuno mi saprebbe dire se in qualche libreria ansi per
c++ si trova una funzione analoga al 'qsort' di <stdlib.h> ?
--
******* Claudio Castelpietra *******
E-mail:  
i09...@spv.ing.uniroma1.it
 
castel...@acm.org

c++ si trova una funzione analoga al 'qsort' di <stdlib.h> ?
qsort() e` disponibile anche in ISO C++ (come tutte le altre
funzioni delle librerie standard ANSI/ISO C) e si accede con
#include <cstdlib>
using std::qsort;
a norma di draft standard (ma sicuramente qualsiasi compilatore
permette equivalentemente il semplice "#include <stdlib.h>"!).
Inoltre ci sono varie funzionalita` di sort in quella parte della
libreria ISO C++ che veniva un tempo chiamata "Standard
Template Library" (STL), rese disponibili, naturalmente, come
template.  La piu` simile a qsort la ottieni includendo
lo standard header <algorithm>, ed e`:
template<class RanIt, class Pred>
    void sort(RanIt first, RanIt last, Pred pr);
Se hai i dati in un array e vuoi sortarlo tutto, passa come primo
argomento l'array, come secondo il puntatore "subito dopo
la fine dell'array"; ad esempio, se hai:
int pippo[23];
chiamerai sort(pippo,pippo+23);
Il terzo argomento e` il predicato di confronto (per default,
l'operator<, come nell'esempio appena visto).
Alex
Newsgroup: it.comp.lang.c++
Titolo: Diritti di accesso ai membri delle classi derivate

Ciao,
ho un problema di accesso alle funzioni membro...
in pratica ho una classe (siamo originali e chiamiamola
CB) con metodi pubblici, perchè devono essere usati da
funzioni esterne; ora però CB viene ereditata da altre
classi derivate, che ne ridefiniscono alcuni metodi
(tutti dichiarati virtuali) come protected, perchè
in queste altre classi non mi serve più esporli.
Se non che il compilatore non me lo permette: in fase
di compilazione mi dà un errore per ogni metodo public
nella classe base (ri)dichiarato protected nella classe
derivata. Non ho trovato niente nel linguaggio C++ che
vieti una cosa simile, allora è un problema del
compilatore (BC++5)?
(Non dipende dal fatto che i metodi siano inline o
meno, ho già provato).


No, non puoi farlo, punto - ora, io non sono tra quelli che riesci a 
citarti lo standard :), pero' il concetto e' quello: se ho il metodo f() 
che e' pubblico in CB, poi faccio CB2 che deriva da CB e ridefinisce f() 
come protected, ho una incongruenza. Infatti avrei:
CB2 cb2;
cb2.f();	// illegale (f e' protected in CB2)!
CB* cb = &cb2;
cb->f();	// legale (f e' public in CB)!
Eppure in entrambi i casi chiamerei la stessa funzione: sarebbe 
abbastanza stupido permettere di accedere alla funzione, ma solo se 
prima passi per un puntatore!!
Ecco la ragione del perche' i diritti di accesso possono solo essere 
"allargati", ma mai "ristretti".
Ma perche' mai ti server una cosa del genere?
-- 
/**
  * 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
  */

 
Sto portando un sorgente scritto per VC++ 6.0...
sotto VC il suddetto costrutto compila senza noie.
Occhei modifico le classi...

...

Se ho capito bene cosa stai facendo e' il compilatore che si sbaglia,
nel senso che non e' un errore ridichiarare con accesso diverso una
funzione membro virtuale. Attenzione che l'accessibilita' e' definita
dal tipo statico di una classe:
class A {
  public:
    virtual int f() { return 2; }
};
class B {
  private:
    virtual int f() { return 3; }
};
int main()
{
  A * ap = new B;
  return ap->f();  // perfettamente legale
}
Ciao,
Nicola

 dal tipo statico di una classe:
Dunque, il mio caso è un pò diverso, ecco lo schema:
class CB
{
public:
	virtual void MetodoX(ecc.ecc.);  // virtuale ma implementato
	virtual bool MetodoY(ecc.ecc.);  // virtuale ma implementato
	virtual int MetodoZ(ecc.ecc.);  // virtuale ma implementato
//	ecc. ecc.
};
//	ecc.ecc...
class DerivataDaCB : public CB
{
protected:
	CB::MetodoX;  // error: attempt to change access rights...
	CB::MetodoY;  // error: attempt to change access rights...
	CB::MetodoZ;  // error: attempt to change access rights...
public:
	ecc.ecc.
};

...

Questa non e' la sintassi corretta. Quello che puoi fare pero' e'
derivare in modo protected:
class DerivataDaCB : protected CB { /* ... */ };
Questo pero' impone che tutte le tue funzioni membro risultino
protected.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Operatore new

 Ciao a tutti,
spero qualcuno possa aiutarmi. Volevo alcune delucidazioni in merito
all'operatore new.
Infatti volevo sapere cosa avviene nel caso l'allocazione dinamica non vada
a buon fine, restituisce forse un puntatore a NULL? Inoltre ho visto che
esiste l'eccezione "bad_alloc". Ho provato ad usarla ma mi da dei problemi,
uso Mingw32, e non riesco a trovare l'include da aggiungere al sorgente
(credo ce ne sia bisogno).
Grazie
Ciao
GIovanni
 
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 (credo ce ne sia bisogno).
new solleva un'eccezione di tipo std::bad_alloc in caso di fallimento, e 
dovresti trovarla includendo <new>. Se vuoi che restituisca 0 senza che 
sollevi eccezioni, devi specificare la clausola no_throw.
-- 
There are better things in life than alcohol, but alcohol makes up for 
not having them. - Terry Pratchett.
Newsgroup: it.comp.lang.c++
Titolo: problemi con Visual C++

Salve sono nuovo di qquesto newsgroup e sono contento di aver trovato un
cosě elevato numero di amici (almeno spero!!)
Utilizzo la versione visual studio 6.0 e ho creato una dlg application.
Nella versione debug funzionava correttamente in quella relase sul mio e su
altri pc non mi permette di inserire all'interno delle finestre i dati ( o
meglio posso mettere solo numeri ma non  virgole o il segno meno) infatti al
premere di una lettera o di un simbolo il windows emette un suono di sistema
ma nel prg non accade nulla... come posso fare?
Grazie a tutti
Giovanni

Non e' per smorzare il tuo entusiasmo, ma queste domande dovresti porle
su it.comp.programmare.win32 . Qui ci occupiamo del C++ standard e non
dei problemi di specifici strumenti.
Ciao,
Nicola

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

Salve, volevo sapere se in un array è possibile partire da un altro valore 
diverso da 0. 

 valore diverso da 0.
no
E.

 diverso da 0.
In C e C++, diversamente dal Pascal (per es.), non è possibile.
Posso chiederti perché hai questa esigenza? (è facile comunque
ricondurre qualsiasi indicizzazione alla 0-based).

 valore diverso da 0.
Nulla te lo vieta, ma lo spazio antecedente il tuo "primo elemento" è 
sprecato.
Alternativa più banale, inserire uno spiazzamento nel codice:
for (int j = 5; j < 50; j++)
	cout << myarray[j-5] << endl;
Infine, la cosa che farebbe un progettista OO, è fare l'overloading 
dell'operatore [], però è un argomento che dovrai studiare più avanti...
Newsgroup: it.comp.lang.c++
Titolo: Differenze tra funzione e classe-funzione

non so bene come si chiamano, forse classe-funzione non č il termine
giusto... intendo quelle classi che hanno l'operator()
che differenza c'č?
si possono usare SEMPRE in modo intercambiabile?
per le funzione della libreria standard, ad esempio, si possono usare
sia le semplici funzioni che le funzione-classe?
-- 
]\/[ad]\/[age (
www.mindreamz.net
)
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

 sia le semplici funzioni che le funzione-classe?
se ho capito bene tu intendi le () operatore.
vedile come 2 cose diverse, nella classe sono usate come operatore e non 
hanno a che fare con una chiamata a funzione, tranne per la sitassi 
uguale. si possono usare per quelle classi in cui e' stato definitio 
l'operator(), altrimenti non e' possibile scrivere NomeClasse(valori..)

Perche con un costruttore <nomeClasse>(valori..) nn è possibile, vero?


 l'operator(), altrimenti non e' possibile scrivere NomeClasse(valori..)
Questo non e' molto chiaro, ed e' anche inesatto. L'operatore di
chiamata a funzione permette di usare le istanze di una classe come se
fossero funzioni. Nota che per usarlo col *nome* della classe,
occorrono due paia di parentesi:
NomeClasse()();
Ciao,
Nicola

 Nicola
beh usare una classe come se fosse una funzione non ne fa una funzione, 
la sintassi e' la stessa ma sono 2 cose diverse.
per nomeclasse intendevo l'istanza, ho sbagliato ad esprimermi, hai 
ragione che per il nomeclasse ci vogliono 2 paia di parentesi.
Newsgroup: it.comp.lang.c++
Titolo: HELP: stranezza in project VC++ 4

Salve a tutti,
qualcuno mi può aiutare, per piacere?
Ho fatto un progetto con VC++ 4 dialog-based (con AppWizard). Le uniche
modifiche che ho fatto ai Settings del progetto originale sono:
a) Maximize speed
b) risorse: Inglese (USA)
c) eliminazione della versione Debug (forse ho sbagliato, ma non uso il
Debug, e comunque non credo c'entri con ciò che sto per dire).
Quando aggiungo i controlli, i loro ID appaiono in View/Classwizard/Message
maps, ma non in View/Classwizard/Mamber variables: qui ci sono solo IDCANCEL
e IDOK (che fra l'altro avevo già cancellato). Quindi, non posso creare
variabili membro!
So già come "aggirare" problema usando la programmazione, ma mi piacerebbe
mi spiegaste come si può fare.
Grazie - saluti :-)
Marco Zanon (
m.z...@usa.net
)
http://www.geocities.com/SiliconValley/Peaks/6455
(Zamorano fan page, free MIDI mailing list, Music db...)



Newsgroup: it.comp.lang.c++
Titolo: Directory dell'applicazione

C'è un modo per saper da programma quale è la directory dove risiede il
programma stesso?
ciao,Maurizio.

 programma stesso?
int main( int argc, char *argv[] )
{
    // argv[ 0 ] č il nome del programma completo di percorso
}
EMG

Puoi usare la funzione GetModuleFileName() che ritorna il nome completo del programma e quindi estrarre la directory.
Antonio Donatiello
Newsgroup: it.comp.lang.c++
Titolo: Differenze tra compilatori

Salve a tutti,
ho una classe derivata:
class derivata:public base{
nella mia classe derivata sto' cercando di implementare un operatore:
       derivata operator+(vector &B){
             double x=getx()+B.getx();
             return (vector(x,y,z));
             }
sulla riga dove c'e' il return il mio compilatore (Dev-C++ versione 
4.9.9.2) mi da questo errore:
no matching function for call to `vector::vector(vector)'
(vector e' il nome vero della mia classe derivata).
Mentre l' MS Visual C++ compila tranquillamente.
Qualcuno ha incontrato e magari risolto un problema simile al mio?
Grazie anticipatamente a chi prestera' attenzione :)

Mi lancio: potrebbe essere il return, nel senso che di fatto stai 
cercando di ritornare un oggetto costruito sulla stack; a quel punto il 
compilatore ne deve fare una copia (altrimenti passeresti un oggetto a 
scope limitato al metodo - di fatto viene distrutto dopo il return) e 
non trova il costruttore
vector( vector )
anche perche' di default crea il copy-constructor vector( vector & ).
Ma c'è un'altissima probabilita' di aver detto una sciocchezza.... :)
Ciao !
Manuel ha scritto:


 Ma c'è un'altissima probabilita' di aver detto una sciocchezza.... :)
Ammesso che sia come dici tu sarebbe interessante vedere perche' VC++ 
compila e Dev tira fuori il problema.

"Manuel" <I...@vanilla.sky> ha scritto nel messaggio
news:435e30d9$0$29550$4faf...@reader1.news.tin.it...

Potresti postare un pezzo di codice che comprenda i costruttori ed evitare
di scrivere derivata e vector se sono la stessa cosa? non sono riuscito a
riprodurre l'errore con gcc 3.4.4 (dovrebbe essere lo stesso del DEV che hai
tu). Quale versione del Visual-C++ lo compila? Le spiegazioni potrebbero
essere tante, a cominciare dal fatto che potresti aver definito un
costruttore di copia come vector( /* const */ vector& ) cioč senza il const
(ed in questo caso č il visual c++ a sbagliare perchč leghi un temporaneo ad
un reference non-const). Questa idea č rafforzata dal fatto che il visual
c++ 7.1 (Se di questo staimo parlando) implementa in casi semplici la return
value optimization che permette di costruire l'oggetto ritornato
direttamente nel contesto del chiamante ed evitare la copia. Probabilmente
la applica senza controllare la presenza del costruttore di copia corretto e
perciň compila allegramente (ma il codice comunque č fuori standard )
--
----------------------------
Fulvio Esposito
"La differenza tra teoria e pratica e',
in pratica, un po' piu' che in teoria"
----------------------------

 
Effettivamente hai ragione, togliendo il costrutture copia compila senza 
errori.
Sentiti ringraziamenti :D
Manuel
Newsgroup: it.comp.lang.c++
Titolo: Problema di ereditarietà

Ciao group,
ho la seguente - banale - strutturazione a classi
 
class Foo{
public:
	virtual void foo()=0;
};
 
class Father{
public:
	Father(Foo *ref){
		ref->foo(); //<-- Troubles here!!!
	}
};
 
class Child: public Father, public Foo{
public:
  Child(): Father((Foo *)this){
 
  }
 
  virtual void foo(){
	while(true);
  }
};
 
Quando istanzio l'oggetto Child, 
 
  Child *c = new Child();
 
non mi risolve il methodo foo. Cosa sto sbagliando?
 
Grazie
R
 
 
 
 

 Child(): Father((Foo *)this){
 
Sbagli qui:
 
Child(): Father((Foo *)this){
 
 
la virtual table di Child::this è ancora nulla
prima deve costruire Father e Foo poi C
Newsgroup: it.comp.lang.c++
Titolo: template e virtual

Ciao a tutti,
ho la seguente classe astratta che contiene un metodo pure virtual ed 
una funzione template:
class TheServices {
     protected:
         virtual Shape* getShapeComponent(const char* name)=0;
     public:
         template<class T> T* getComponent(const char *name);
};
La funzione col template richiama la pure virtual ad un certo punto:
template<class T>
T* TheServices::getComponent(const char *name)
{
     // Get the component as a CORBA object
     Shape* obj = this->getShapeComponent(name);
};
Ho definito la classe specializza il metodo virtuale
class SpecServices: public TheServices {
	Shape* getShapeComponent(const char* name) { cout<<"Test"<<end;
}
Per vedere se funzione instanzio un oggetto nel modo seguente
TheServices tS = new SpecServices();
tS->getComponent("PROVA");
Invece di vedere apparire la scritta "Test" ho un segmentation fault.
Da qualche prova che ho fatto il problema sembra risalire alla funzione 
virtual. Avete qualche suggerimento?
Grazie!

Alessandro Caproni ha scritto:

Non so che compilatore accetti il codice sopra riportato senza lamentarsi,
ma con quanto segue:
#include <iostream>
struct Shape {
   int x,y;
};
class TheServices {
     protected:
         virtual Shape* getShapeComponent(const char* name)=0;
     public:
         template<class T> T* getComponent(const char *name);
};
template<class T>
T* TheServices::getComponent(const char *name)
{
     static T result;
     Shape* obj = this->getShapeComponent(name);
     return &result;
};
class SpecServices: public TheServices {
     Shape* getShapeComponent(const char* name);
};
 
Shape*
SpecServices::getShapeComponent(const char* name)
{
   static Shape s;
   std::cout << "get " << name << "\n";
   return &s;
}
 
int main() {
   TheServices* tS = new SpecServices();
   int* ic = tS->getComponent<int>("PROVA");
   delete tS;
}
se eseguito stampa "get PROVA" come dovrebbe. A parte "Shape" che
ho dovuto introdurre per poter compilare e le variabili static,
introdotte per poter ritornare un puntatore a qualcosa senza
tirare in ballo std::auto_ptr, la differenza sostanziale rispetto
al codice di partenza è che in
   int* ic = tS->getComponent<int>("PROVA");
viene specificato <int> perchè altrimenti il compilatore dovrebbe
*rifiutarsi* di compilare, dato che non può dedurre T dagli argomenti
per il semplice fatto che T non è uno degli argomenti. Se lo tolgo,
peraltro, g++ 3.4 mi dice:
   prova.cpp: In function `int main()':
   prova.cpp:42: error: no matching function for call to `TheServices::
      getComponent(const char[6])'
modulo eventuali imprecisioni, direi che il problema è nei pezzi di
codice che non abbiamo visto.
Barone Frankenstein

Ciao,
hai ragione... Ho cercato di semplificare un codice molto complesso su 
cui lavoro ed ho dimenticato alcune parti.
Nel frattempo ho risolto il problema: era dovuto ad una forward declaration
per cui non avevo errori a tempo di compilazione ma un crash a run time.
Grazie comunque per il tuo aiuto.
Ale

Newsgroup: it.comp.lang.c++
Titolo: c++: portale e api

Salve, sapete se esiste qualche portale italiano dedicato al C++ e 
qualche sito dove poter scaricare la documentazione ufficiale sulle 
librerie standard del C++ (un po' come fa la sun per java 
http://java.sun.com/j2se/1.4.2/docs/api/
 ). Grazie!


Prova su 
http://www.programmazione.it
, c'e' una sezione dedicata al
C++.
Non credo invece che esista qualcosa di analogo al sito della Sun,
essendo il C++ un linguaggio non particolarmente legato ad una
specifica azienda (a differenza di Java creato da Sun).
La documentazione "ufficiale" e' lo standard del C++ (in inglese) puoi
comprarlo on-line per un "pugno" di dollari su 
http://webstore.ansi.org
(trovi maggiori dettagli sulle FAQ)
Saluti,
Fabio

Newsgroup: it.comp.lang.c++
Titolo: Cerco corso di C - C++

Qualcuno conosce qualche manuale utile da scaricare?
Grazie1000!!!
--
Eliminare NOSPAM dall'indirizzo per rispondere in e-mail.
GRAZIE.

http://www.informit.com
libri completi disponibili on line in inglese dopo piccola registrazione
gratuita
Nick
Newsgroup: it.comp.lang.c++
Titolo: Come scrivere un servizio per Win32 ?

Chi può darmi una dritta su come si scrive un servizio per WIN32.
Grazie, CP

Chi puň darmi una dritta su come si scrive un servizio per WIN32.
it.comp.programmare.win32
Saro' felice di risponderti.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
#exclude <windows.h>
Newsgroup: it.comp.lang.c++
Titolo: [REQ] Struct o Class?

Ciao a tutti, sono abbastanza nuovo con il C++ ed ho
un dubbio che vorrei risolvere prima di proseguire nel
mio progetto.
Dovrei definire una "tabella", una specie di scacchiera
per intenderci, ma non posso riferirmi alle varie caselle
semplicemente tramite gli indici di una matrice, perchè
le caselle non sono 1x1 ma 15x15 quindi ho bisogno di
memorizzare in ogni casella le coordinate del suo vertice
(0,0) e del vertice (14,14).
Io avrei definito una classe Tabella con all'interno la definizione
della struct Casella e un array[][] di Casella.
Mi chiedevo se fosse possibile fare la stessa cosa usando
al posto di una struct Casella una classe Casella... il problema
è: devo istanziare qualcosa come 400 oggetti Casella, no?
E' assurda come alternativa vero?
grazie mille,
Blob

 E' assurda come alternativa vero?
Non trovo.
Se fossero struct invece che class non dovresti istanziarle?
Guarda che class e struct sono praticamente la stessa cosa...
  bye
	av.

 al posto di una struct Casella una classe Casella...
In C++ l'unica differenza tra struct e class è che la prima ha
i membri public di default, la seconda private.
Ovvero, le seguenti scritture sono equivalenti:
struct Prova
{
// contenuto della struct
}
class Prova
{
public:
// contenuto della class
}
-- 
Gerolamo 

 Gerolamo
Ma allora perchè esiste anche la Struct?? Residui del C??
No, sul serio, non capisco a cosa serva... l'unica cosa che
mi viene in mente è usare la Struct quando non ho bisogno
di funzioni membro sui dati...verosimile?
grazie,
Blob

 Ma allora perchè esiste anche la Struct?? Residui del C??
_Suppongo_ di si.
In pratica potresti scrivere codice compilabile sia in C che in C++
(cosa che però potrebbe portare a problemi molto subdoli...)
Tutto questo IMVHO.
-- 
Gerolamo 

 di funzioni membro sui dati...verosimile?
Ci sono migliaia di header di librerie C che tipicamente usi con un 
semplice extern "C" che se il C++ non avesse la "struct" dovrebbero 
essere sdoppiati :)
Personalmente uso le struct qualche volta per serializzare dati da/a 
disco o nei container privati di qualche grossa classe (in quel caso 
l'intera struct e' visibile solo dentro la classe).
Bye,
  Gabry

 wrote in message 
news:FHQHi.117042$U01.9...@twister1.libero.it...


 Bhe direi che le struct e le classi *NON sono proprio la stessa cosa....
A parte il default sulla visibilità dei membri, non ci sono altre 
differenze, che io sappia.
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
 

Bhe direi che le struct e le classi *NON sono proprio la stessa cosa....
A meno dello scope di visibilità predefinito, struct e class sono
esattamente la stessa cosa. Le struct possono anche avere metodi, in
C++.
p.s.: potresti quotare decentemente?
Newsgroup: it.comp.lang.c++
Titolo: Service pack VisualStudio

Cos'è il Service Pack 5 di Visual studio?
Ho visto che è scaricabile dal sito Microsoft (130Mb).
Se lo scarico e lo eseguo ho l'ambiente di sviluppo Visual studio per
programmare in C++  VB?
Oppure è necessario avere una versione di VisualStudio per installarlo?

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 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti

 Oppure è necessario avere una versione di VisualStudio per installarlo?
si.
--
xaero


sicuramente hai ragione per tutti gli OT ma scusa ogni volta dobbiamo
leggere tutto sto messaggio ? :)))
che stress ....
metti un riferimento nell'oggetto del messaggio e basta tanto ormai lo
conosciamo  a memoria :)
però ripeto che hai dicuramente ragione :))
(ma ogni volta che leggo le tue risposte mi ritrovo sto messaggio)
ciaooo :))
--
-------
sito: 
www.dadev.it
ultime: Ocx per irc testi
-------

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

 "_"
Se:
- tutti si preoccupassero di leggere le FAQ prima di postare; O
- se tutti si preoccupassero di leggere il manifesto del newsgroup prima
  di postare; O
- se tutti si preoccupassero di leggere i messaggi del newsgroup prima
  di postare;
allora si, si farebbe prima a rispondere.  Perche' di disinformati che
piombano qui dentro parlando a vanvera di cose che non riguardano le
nostre discussioni non ce ne sarebbero.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

Newsgroup: it.comp.lang.c++
Titolo: file .lib

Perdonate la mia incompetenza ma vorrei sapere se è possibile leggere
in qualche modo dei file .lib scritti in Assembler.

 
Si', e' possibile.
Con un viewer o editor esadecimale, ad esempio.
Ma ci troverai poche informazioni utili.
--
Roal Zanazzi

Roal Zanazzi ha scritto:

ok grazie
Newsgroup: it.comp.lang.c++
Titolo: Primo carattere di una stringa

salve a tutti, penso di rompere con una domanda talmente idiota:
necessito di estrarre il primo carattere da una stringa.
Esempio
string s;
cin>>s;
adesso vorrei prelevare dalla stringa s il primo carattere.
Un' ultima domanda, esiste un modo per includere anche lo spazio in
una stringa???
Cioč se inserisco una frase con uno spazio č possibile far capire al
compilatore che si tratta sempre della stessa stringa???
Grazie per il vostro interessamento...

 una stringa???
string s;
getline(std::cin, s, '\n');
Ciao

Troppo gentile, non ci avevo pensato a fare s[i];
grazie ache per l'altro aiuto, domande veramente idiote.

Newsgroup: it.comp.lang.c++
Titolo: VISUAL STUDIO (problema stupido)

Mi e' scomparsa la barra verticale degli oggetti (bottoni ecc...)
Che devo fare per farla riapparire
--
IL LADRO D'ANIME
Colui che cavalca le tenebre e governa la morte e la distruzione
(scopri la storia del mio personaggio, clicca qui
http://www.baccolo1.supereva.it/sito2/piccolo_esperimento_letterario.htm
)

Come da oggetto

 Come da oggetto
Questo non e' un problema di C++, non e' vero?!? Sei OT.
Ad ogni modo tra i menu c'e' una voce... io ho .NET e non mi ricordo sul
VC++6.
Basta provare, ci metterai al massimo 2 minuti...
In .NET gestisci quasi tutto dal menu view.
Tommy

 ha scritto nel messaggio
news:b88p79$duo$1...@titan.btinternet.com...

Non credo di essere tanto Ot visto che si sta parlando di un compilatore per
c++. Il problema e' banale , lo ametto, ma non lo e' poi cosi' tanto visto
che :
1) Sono alle prime armi con la programmazione.
2) L'interfaccia del programma, in inglese, non aiuta di certo.
Noto comunque, che, allo stato attuale, non ho avuto alcuna risposta.

 Noto comunque, che, allo stato attuale, non ho avuto alcuna risposta.
Le risposte non ti sono dovute, non stai pagando per un servizio. Qui si
risponde per cortesia e piacere.
Tommy

 ha scritto nel messaggio
news:b89dma$rqs$1...@hercules.btinternet.com...

Ovviamente, quello che volevo dire  e' che forse il problema da me posto non
e' poi cosi' banale giudicando dalle risposte ( ma ne dubito).
Con questo tolgo il disturbo.

Newsgroup: it.comp.lang.c++
Titolo: comunicazioni seriali infrarosse

Devo fare una comunizazione via seriale (infrarossa) tra 2 pc
ma non riesco a farla funzionare.
Per aprire la porta ho usato (da Visual C++)
l'api CreateFile
e per scrivere WriteFile (per leggere ReadFile)
ma non funziona!
Devo settare qualche cosa in particolare ?
Altra domanda: posso impostare il bit di Stop, i Baud, parita ecc.. cioè
impostare la porta ? Come ?
Grazie

 l'api CreateFile
Spostarsi in it.comp.programmare.win32.
Grazie.
EMG
Newsgroup: it.comp.lang.c++
Titolo: tellg()

Cari amici, sapete dirmi come mai il seguente programmino compilato con
il mio DJGPP:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream in( "test" );
    in.seekg( 0, ios::end );
    cout << in.tellg() << endl;
}
non mi dà la reale dimensione del file ma sembra aggiungere uno per ogni
riga presente in esso? Eppure su Thinking in C++ c'è proprio un esempio
del genere...
EMG

 il mio DJGPP:
[ snip ]
Sotto Linux funziona:
[root@fokhouse /root]# rpm -qa | grep c++
libstdc++-2.9.0-30
egcs-c++-1.1.2-30
[root@fokhouse /root]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 Sotto Linux funziona:
Oh, finalmente qualcuno mi ha risposto, grazie. Quindi pensi che sia un
problema del mio compilatore o della libreria? Sei sicuro che ti
restituisca la stessa identica dimensione che trovi sulla directory?
Potrebbe dipendere dal fatto che, se non vado errato, le righe di testo
in Linux vengono terminate con il solo CR mentre in DOS con la coppia
CR+LF? Hai provato con un file di testo, vero?
EMG

in Linux vengono terminate con il solo CR mentre in DOS con la coppia
con il solo LF.

 Hai provato con un file di testo, vero?
[fok@fokhouse /tmp]$ cat test.C
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream in( "test" );
    in.seekg( 0, ios::end );
    cout << in.tellg() << endl;
    return 0;
}
[fok@fokhouse /tmp]$ g++ test.C -o testcpp
[fok@fokhouse /tmp]$ file upgrade.log
upgrade.log: ASCII text
[fok@fokhouse /tmp]$ ln -s upgrade.log test
[fok@fokhouse /tmp]$ ./testcpp
165764
[fok@fokhouse /tmp]$ wc -c test
 165764 test
[fok@fokhouse /tmp]$

Newsgroup: it.comp.lang.c++
Titolo: da dll a statica

Salve,
sono un neofita di visual c++, ho il codice sorgente di una dll. Cosa debbo
modificare per trasformarla in una .lib.
Grazie
Massimo

 wrote in message
news:98ihdm$23iic$1...@ID-38013.news.dfncis.de...


Ciao,
Avevo provato la seconda opzione ma per ogni file .c mi dava l'errore di
fine inaspettata del file, cosa significa?
Grazie
Massimo
"Bob Rock" <there_is_no_business_like_showbusiness@_NO_SPAM_hotmail.com> ha
scritto nel messaggio news:SF4r6.19$G_1...@news.cpqcorp.net...


 wrote in message
news:98irv3$2648r$1...@ID-38013.news.dfncis.de...


modificare per trasformarla in una .lib.
it.comp.programmare.win32 e saranno felici di aiutarti
-- 
 (o-  | Un OS per domarli, Un OS per trovarli,
 //\  | Un OS per ghermirli e nel buio incatenarli
 V_/_ | Nella terra di Redmond, ove l'ombra cupa scende...
Tessera 99ers 204           raffaele punto salmaso presso libero punto it

Newsgroup: it.comp.lang.c++
Titolo: SERVICE PACK 3

Dove posso trovare, in una rivista o nei giornali ma non nella rete, la
versione Core del Service Pack 3 del Developer Studio '97??
Grazie per l'aiuto!
Wave++
Wave_soft '98
wave...@iol.it
www.xoom.com/wave_soft
 (attualmente il sito è vuoto)!!!
Programmer and much more :-))))

versione Core del Service Pack 3 del Developer Studio '97??
Lo potevi trovare nel CD allegato alla rivista DEV di maggio (n. 52).
Puoi richiedere l'arretrato.
Ciao.
Mauro Corsi
cor...@NIENTESPAM.iol.it

Newsgroup: it.comp.lang.c++
Titolo: problemi con l'inizializzazione di string

Vorrei sottoporvi questo scorcio di codice
int main(int argc, char * argv[])
{ 
  string orig = argv[1];
  int len = orig.size();
  base.insert(len-4,"B");
  string enh = orig;
  enh.insert(len-4,"E");
}
Chiamo il programma ad esempio con paramentro 100bn.raw, e dovrebbe 
crearmi le due stringhe 100bnE.raw e 100bnB.raw, pero' subito dopo 
l'inizializzazione della prima stringa il programma inizia a dare i
numeri ed esce in modo anomalo (tralaltro senza dare errore). La stringa
orig viene correttamente inizializzata, da li in poi non va piu' nulla.
Inutile dire che il codice compila correttamente.
-- 
  _  _  >>Now at work<<  _     || ICQ number.................Non lo uso
 | \| |___ _____ ___ ___|_|___ || Home-Page ................Non ce l'ho
 | .` | -_|     | -_|_ -| |_ -||| E-Mail................Non l'avrai mai
 |_|\_|___|_|_|_|___|___|_|___||| Un Nemesis che ha pochi e-contatti ;)

Nemesis wrote:
[cut]
Scusate ma ho gia risolto, era colpa dell'editor che mi diceva di aver 
compilato il codice ma poi non lo scriveva su disco, e quindi io
lanciavo
un eseguibile vecchio.

Newsgroup: it.comp.lang.c++
Titolo: [c++] Domanda banale

Coma faccio a conoscre la grandezza di un array con puntatore ! tipo
char *buffer;


con strlen(buffer), ovviamente la stringa deve essere stata inizializzata
(es. strcpy(buffer,"ciao")), perchè altrimenti ti restituisce il numero
minimo di caratteri oltre quelli allocati dove trovi il carattere '\0' in
memoria.
In C++ dovresti/potresti usare std::string.

 char *buffer;
Non puoi. Se nell'array č stata memorizzata una sequenza terminata da NUL, puoi
conoscere la lunghezza di quella sequenza tramite 'strlen'.
Max

 wrote in message
news:c7dgq6$qol$
1...@newsreader.mailgate.org

Esiste una versione (credo non standard) del file malloc.h che ti 
consente di fare:
    char * buffer = new char[5000];
    cout << "buffer size: " << malloc_usable_size(buffer) << endl;
N.B. Il valore tornato e' non inferiore alla dimensione del buffer
espressa in byte.
ciao
gian luigi
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

     cout << "buffer size: " << malloc_usable_size(buffer) << endl;
Stroustrup ti sparerebbe. Cancella questa porcheria e usa un vector
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.2.2. C, C++ and ASM developers
                               and beta testers are welcome!

 Stroustrup ti sparerebbe. Cancella questa porcheria e usa un vector
Ribadisco la porcheria in quanto malloc.h esiste e funziona come
dichiarato.
Dal file malloc.h
/* Prototypes and definition for malloc implementation.
   Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.
   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */
#ifndef _MALLOC_H
#define _MALLOC_H 1
[...]
/* Report the number of usable allocated bytes associated with allocated
chunk __ptr. */
extern size_t malloc_usable_size __MALLOC_P ((__malloc_ptr_t __ptr));
[...]
Su redhat 7.3 e gcc 2.96 il seguente codice funziona:
#include <iostream.h>
#include <malloc.h>
int main(int argc, char *argv[])
{
  char * ptr = (char *) malloc (3000);
  char * ptr2 = new char[4000];
  cout << "ptr: " << malloc_usable_size(ptr) << endl;
  cout << "ptr2: " << malloc_usable_size(ptr2) << endl;
  return 1;
}
Producendo il seguente risultato:
ptr: 3004
ptr2: 4004
