mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: PUNTATORI A METODI- Principiante

Salve a tutti vorrei porvi una domanda sui benedetti (o maledetti)
puntatori ad oggetti.Supponiamo che dichiaro - a livello globale-
void funzione_uno();
void funzione_due();
void *puntatore();
ora, se nel mio main() faccio puntare il mio *puntatore per    esempio
*puntatore = funzione_uno();
a questo punto:
puntatore();
mi chiama la mia bella funzione puntata, ovvero funzione_uno.
Fin qui ok. Ma come faccio a posizionare il puntatore
su di una funzione (*puntatore = funzione) nel caso di una funzione
appartenente ad una classe o struttura?.
Se mi creo la mia bella istanza di classe e provo a
*puntatore = istanza.funzione();
mi manda a quel paese......come fare?
Vi ringrazio per l'attenzione!
Francesco
gi...@tin.it

mi manda a quel paese......come fare?
void (T::* Func)();
Saluti,
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
------------------------------------------------------------------


Davvero ti manda a quel paese? Che compilatore č? Sa dire anche altre
parolacce?


1) La sintassi è sbagliata:
devi ricordarti della precedenza tra gli operatori.
() ha precedenza maggiore di *
quindi void *puntatore() è una funzione che ritorna un
puntatore a void !!!!!!!! (bello he ?)
mentre void (*puntatore) () è un puntatore a una funzione void.
ESEMPIO:
void funzione1 (int, char *);
void funzione2 (int, char *);
void funzione3 (int, char *);
void (*pFunzione) (int, char *);
...
switch(i)
{
  case 1:
     pFunzione = funzione1;
     break;
  case 2:
     pFunzione = funzione2;
     break;
  case 3:
     pFunzione = funzione3;
     break;
  ....
};
pFunzione(2, "pippo");
2) Che ti frega di un puntatore ad una funzione membro ?
Se hai un oggetto usa un puntatore all'oggetto:
CAT gatto;
CAT *pGatto;
pGatto->miagola()
miagola è la funzione membro.
Pippuz

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

Ciao,
  qualcuno mi puo' spiegare perche' il codice seguente compila e funziona
#include <fstream>
int main() {
 
	using namepspace std;
	int i;
	ifstream binary_sequence("nome_file");
	/*nome_file e' un file binario contenente  un intero */
	binary_sequence.read((char*) &i	, sizeof(int) );
	cout << i << endl;	
}
mentre invece sostituendo la riga in cui viene effettuata la read con la 
seguente il compilatore mi da' un errore ( invalid static_cast from type 
`int*' to type `char*')
	binary_sequence.read(static_cast<char*>(&i), sizeof(int));
C'e' un modo piu' elegante per leggere dati da un file binario?
Grazie,
Antonio
p.s. Il compilatore che sto usando e' g++  3.2

 C'e' un modo piu' elegante per leggere dati da un file binario?
qui cedo la parola, non usando gli stream non sono ferratissimo
sull'argomento.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
Newsgroup: it.comp.lang.c++
Titolo: Primi passi

Sto facendo alcuni esercizi. Mi si chiede di scrivere una versione case 
insensitive di string. Dopo aver consultato un po' la guida online delle 
STL, ho partorito (il termine è appropriato) questo:
 >>>
#include <string>
#include <assert.h>
using namespace std;
struct ci_char_traits : public char_traits<char>
{
	static int compare(
		const char_type* _Str1,
		const char_type* _Str2,
		size_t _Num)
	{
		return _strnicmp(_Str1, _Str2, _Num);
	}
};
typedef basic_string<char, ci_char_traits>ci_string;
int main()
{
	ci_string s( "AbCdE" );
	// case insensitive
	//
	assert( s == "abcde" );
	assert( s == "ABCDE" );
	// still case-preserving, of course
	//
	assert( strcmp( s.c_str(), "AbCdE" ) == 0 );
	assert( strcmp( s.c_str(), "abcde" ) != 0 );
}
<<<
Il programma sembra funzionare, ma ottengo 4 warning:
\include\iosfwd(582) : warning C4996: 'std::_Traits_helper::copy_s' was 
declared deprecated
\include\iosfwd(609) : warning C4996: 'std::_Traits_helper::move_s' was 
declared deprecated
\include\iosfwd(600) : warning C4996: 'std::char_traits<char>::copy' was 
declared deprecated
\include\iosfwd(627) : warning C4996: 'std::char_traits<char>::move' was 
declared deprecated
E' forse un modo velato per dire che è necessario eseguire l'override 
anche di move e copy?
Kiuhnm

Kiuhnm ha scritto:
[...]
Ho guardato la soluzione (ma la domanda rimane, eh!) e ho visto che 
l'idea era buona anche se ho tralasciato alcune funzioni (eq, find, 
...): la fretta! :)
Kiuhnm

 anche di move e copy?
No, e' il compilatore Microsoft che indica come deprecate funzioni che
loro ritengono "pericolose". Una pratica quanto meno discutibile,
soprattutto se abilitata di default.
Ciao,
Nicola

 soprattutto se abilitata di default.
Pericolose? Questa non l'ho capita: perchè dovrebbero considerare 
pericolosa una funzione (che per giunta si sono scritti _loro_, se sta 
nella STL di microsoft)??


L'idea e' che nella libreria standard ci sono funzioni che se non usate
con cautela possono favorire aggressioni mediante buffer overrun, vedi
ad esempio sprintf.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Alla modifica di un elemento di un array di puntatori viene  modificato tutto l'array

Ciao a tutti,
ho questo tipo di problema:
 N=1;
 while (recv (sd,BufferIn,N,0))
  {
   if (strcmp(BufferIn,"\n")==0)
    {
     Nn=strlen
(AppoStr);
     PageIn[i]=new char [ Nn + 1 ] ;
     PageIn[i]=AppoStr;
     printf ("AppoStr= %s\nLen=%d\ni=%d
\n",AppoStr,Nn,i);
     printf ("............................\n");
     printf ("PageIn[%d]=%s\n",i,PageIn[i]);
     printf ("********************************\n");
     printf ("PageIn[0]=%s\n",PageIn[0]);
     printf ("PageIn[1]=%s",PageIn[1]);
     printf ("\n--------------------------------\n");
     i++;
     AppoStr[0]='\0';
    }
   else
    strcat(AppoStr,BufferIn);
  }
Da una connessione tcp prendo i dati
while (recv (sd,BufferIn,N,0))
ed aggiungo i singoli carattere in AppoStr, fino a quando non trovo
\n.
codice:
  char *PageIn[3048];
A questo punto definisco lo spazio necessario per contenere la stringa
AppoStr nell'iesima posizione di PageIn ( PageIn[i]=new char [ Nn +
1 ];).
Nell'output di debug ho questo:
*************************
AppoStr= HTTP/1.1 401 Unauthorized
Len=26
i=0
............................
PageIn[0]=HTTP/1.1 401 Unauthorized
********************************
PageIn[0]=HTTP/1.1 401 Unauthorized
PageIn[1]=(null)
--------------------------------
AppoStr= Server:
Len=9
i=1
............................
PageIn[1]=Server:
********************************
PageIn[0]=Server:
PageIn[1]=Server:
--------------------------------
AppoStr= Date: Thu, 13 Aug 2009 07:51:27 GMT
Len=36
i=2
............................
PageIn[2]=Date: Thu, 13 Aug 2009 07:51:27 GMT
********************************
PageIn[0]=Date: Thu, 13 Aug 2009 07:51:27 GMT
PageIn[1]=Date: Thu, 13 Aug 2009 07:51:27 GMT
--------------------------------
AppoStr= WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
Len=54
i=3
............................
PageIn[3]=WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
********************************
PageIn[0]=WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
PageIn[1]=WWW-Authenticate: Basic realm="ADSL Router (ANNEX A)"
--------------------------------
Si evince che
Quando scrivo in PageIn[i] il valore di AppoStr viene regolarmente
scritto (nell'output subito dopo la riga di punti (............)
Il problema è che vengono modificati anche l'altri elementi
dell'array.
Cosa è che mi sfugge ?
Grazie

Non è che c'entri molto con il linguaggio C++ di per sé, tanto più che
quello è C.
Prova in it.comp.linux.development o nell'equivalente gruppo per
windows.
Ciao,
m.


     {
'recv' restituisce -1 in caso di errore, quindi non puoi usarlo in quel
modo. Inoltre, non c'� alcuna garanzia che BufferIn sia NULL-terminated,
quindi non puoi usarlo direttamente con funzioni come strcat.
In generale, un programma che non usa il valore restituito da recv (o da
recvmsg, o da read) � bacato.
it.comp.linux.development � un NG pi� appropriato per questo tipo di
problemi.
Max
Newsgroup: it.comp.lang.c++
Titolo: Gestione dellla grafica!

Ho bisogno di getsire la grafica di un PGM, ma fino ad ora no ho mai usato
nessuna funzione grafica!
L'unica funzione che ho utilizzato è cout!
Avrei bisogno di gestire lo schermo in modalità 640X480!
Qualcuno potrebbe le funzioni che mi permettano di gestire il video in
questa modalità?

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 Linux:      it.comp.linux.development
                it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
forums.borland.com
 (in inglese)
Grazie,
Nicola Musatti

Newsgroup: it.comp.lang.c++
Titolo: Naming Conventions

Salve, bella gente (captatio benevolentić).
So che probabilmente č una di quelle cose che si chiedono spesso
e di cui si troverebbe parecchio su internet, ma il punto č questo:
se ne trovano troppe. Ci sono convenzioni che "vanno per la maggiore" ?
Oppure qualcosa che vi sentite di consigliare per vostra esperienza?
Se non ne potete piů di sentirvelo chiedere scusatemi ;)
-- 
"I'd love to go out with you, but it's my parakeet's bowling night."

 
Di usare il cervello e delle convenzioni che _semplifichino_ la 
scrittura del codice e che lo rendano sufficientemente chiaro a chiunque 
lo debba leggere ed eventualmente modificare o manutenere.
--
Roal Zanazzi

[...]Ci sono convenzioni che "vanno per la maggiore" ?
La più conosciuta è la notazione ungherese, che in ambienti
"microsoftiani" viene usata spesso (tutti gli esempi C o C++ su MSDN
usano questo metodo, ad esempio).  Personalmente la odio.  Quando si
lavora in team generalmente si adottano delle convenzioni comuni di
scrittura del codice.  La scelta dei nomi è importantissima per dare
un senso a ciò che altri leggeranno.



Grazie a tutti, siete fantastici! :)
-- 
"I was gratified to be able to answer promptly, and I did.  I said I
didn't know."
		-- Mark Twain

On Fri, 29 Sep 2006 20:45:32 +0200, Andrea Laforgia wrote:

Ah, comunque quella la odio anch'io, mai usata e me ne guardo.
-- 
Save the whales.  Collect the whole set.
Newsgroup: it.comp.lang.c++
Titolo: Funzioni unione e intersezione insiemi

Ho provato a creare una classe IntegerSet che rappresenta insiemi di numeri
interi tra 0 e 100 però le funzioni per creare le unioni e le intersezioni
di due insiemi non mi funzionano vi allego le funzioni e IntegerSet.h:
//IntegerSet.h
class IntegerSet
{
public:
IntegerSet();
IntegerSet(int, int, int, int, int);
void unionofIntegerSet(IntegerSet, IntegerSet);
void intersectionOfIntegerSet(IntegerSet, IntegerSet);
void insertElement(int);
void deleteElement(int);
bool isEqualTo(IntegerSet);
void printSet();
~IntegerSet();
private:
int set[101];
bool verifyEmpty();
};
//ecco le funzioni che mi danno problemi
void IntegerSet::unionofIntegerSet(IntegerSet uno, IntegerSet due){
for (int i=0; i<101; i++){
if ((uno.set[i]==1) || (due.set[i]==1))
set[i]==1;
}
}
void IntegerSet::intersectionOfIntegerSet(IntegerSet uno, IntegerSet due){
for (int i=0; i<101; i++){
if (uno.set[i]==1 && due.set[i]==1)
set[i]==1;
}
}
Grazie.

 set[i]==1;}
Mah... in teoria dovrebbero anche andare bene.
(anche se tanto varrebbe usare degli array di booleani, tipo
bool set[101]; o un set<int> )
Ma ti sei ricordato di inzializzare i set ?
Il problema e' che se non inizializzi il vettore set quando
costruisci il tuo IntegerSet allora questo conterra' dei
valori casuali.
Quindi poi quando fai if ((uno.set[i]==1) || (due.set[i]==1))
set[i]==1;
tu vai a settare a 1 solo i membri dell'unione, mentre negli
altri rimane il caos. Dovresti aggiungere un "else set[i]=0".
Oppure usando direttamente un
bool set[101];
basterebbe fare ad esempio
for (int i=0; i<101; i++) set[i]=uno.set[i] || due.set[i];
per l'unione e
for (int i=0; i<101; i++) set[i]=uno.set[i]  && due.set[i];
per l'intersezione
ciao,
g.

 g.
L'esercizio mi chiedeva di usare 0 e 1 al posto di bool, ho provato a fare
come mi hai detto ma non cambia nulla, quando provo a compilare la classe mi
vengono dati questi messaggi che non sono errori ma che mi vengono segnalati
come warning cosě fa visual studio 
2003.net
 ecco cosa mi viene detto:
IntegerSet.cpp
c:\Documents and Settings\Angelo\Documenti\Visual Studio
Projects\intset\IntegerSet.cpp(33) : warning C4553: "==": l'operatore non ha
effetto. Si intendeva "="?
c:\Documents and Settings\Angelo\Documenti\Visual Studio
Projects\intset\IntegerSet.cpp(42) : warning C4553: "==": l'operatore non ha
effetto. Si intendeva "="?
Collegamento in corso...
Come posso risolvere?
Grazie

 effetto. Si intendeva "="?
L'errore č lě.
Max

Newsgroup: it.comp.lang.c++
Titolo: ricerca del programma linguaggio ansi c e compilatore

Sono uno studente universitario, arvei bisogno di sapere dove potermi
procurare questo software.
Grazie.

 wrote in message
8vm8fp$egs$1...@nslave2.tin.it...



Se ti serve, ho il TC 2.0, sta su un dischetto (meno)
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave

Leggi le FAQ del gruppo, che sono state inviate da poco da DGP85.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: [OT] Ancora sui litigi provocati dal caldo

Ciao a tutti,
mi vedo costretto a replicare questo messaggio qua oltre che su
it.comp.lang.c ,
scusate per l´OT, ma e´ l´ ennesima volta che vedo litigi sul newsgroup fra
esperti e non dello stesso.
Io penso che una buona collaborazione fra tutti sia utile e
necessaria per cercare di aiutare i meno esperti con discussioni attive e
costruttive nate da threads interessanti.
Mi spiego meglio:
so che una risposta secca a una domanda diretta e´ utile in molti casi.
Ma a volte trovo molto utile seguire discussioni e ragionamenti specie se
supportati dall´ausilio di codice sorgente come esempio.
Ora qui come su it.comp.lang.c ci sono delle persone esperte che leggo con
piacere e che cerco di seguire nei ragionamenti, anche se molte volte devo
ammettere che sono discorsi complicatucci.
Penso che come me qui siano in molti a volere che queste discussioni
continuino.
Quindi il mio appello e´:
Lasciate perdere l´orgoglio personale come se voi stiate dicendo la verita´
scritta nella bibbia e non ammettiate repliche.
Lasciate perdere gli insulti ai ragionamenti del prossimo che il prossimo
potrebbe interpretare come offesa personale.
Lasciate perdere i killfile e altre inutili sciocchezze che non aiutano il
newsgroup a crescere.
Non c´e´ una gara qui dentro per votare chi e´ il piu´ bravo.
Insomma ragazzi un po´ piu´ di umilta´ da parte di tutti, se non vogliamo
che questo come altri newsgroup si secchino come una piantina senza acqua.
Sinceramente
MaurusAP

Sottoscrivo pienamente. Aggiungerei che si puo' sempre discutere in modo
infervorato senza bisogno di insultare i propri interlocutori. Non
lasciate che la mancanza di un confronto diretto allenti troppo i vostri
freni inibitori.
Ciao,
Nicola

newsgroup a crescere.
I kill-file servono proprio a evitare le discussioni.
Se inserisco qualcuno nel kill-file dubito che possa aver
bisogno di leggere i suoi messaggi e se devo leggerli solo
per litigarci, val la pena non vederli proprio.
--
CyberWalkie - walkietalkie(at)
libero.it

per litigarci, val la pena non vederli proprio.
Il killfile non é molto efficace. Basta che qualcuno quoti il testo
della persona che hai plonkato( e molti lo fanno apposta per
divertirsi a scatenare nuove liti) e siamo punto e a capo.
Il Ghenio
-----
ZIO : Fun and games are over with. Anyone who dares
get in my way shall perish.
DIO ci salvi dagli ocx del Viral Basic.
-----
Newsgroup: it.comp.lang.c++
Titolo: Architetture multithreaded

Ciao a tutti.
Sono alla ricerca di documentazione sul multithreading, non tanto dal
punto di vista delle specifiche tecnologie, quanto dal punto di vista di
architetture Object Oriented, patterns e idiom C++ per applicazioni
multithreaded.
Grazie,
Nicola

...

Forse puň essere utile:
Hughes
"Object-Oriented Multithreading Using C++"
AB
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Andrea Baruzzo
Via Circonvallazione, 26
Muzzana del Turgnano (UD) - Italy
e-mail: 
andrea....@ud.nettuno.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Newsgroup: it.comp.lang.c++
Titolo: !!! Visual Studio impazzito!?!

Ciao a tutti
	sto sviluppando con VC++ 5.0 ed è da qualche giorno che ho dei problemi
con il Visual Studio... ecco i sintomi....
1) Anche se non modifico nessun files quando eseguo l'applicazione mi
chiede se voglio ricompilare la maggior parte dei files.
2) In un file sorgente (ma forse anche su altri...) WizardBar e
ClassView mi segnalano la presenza di 5 o 6 member function mentre in
realtà ne ho una trentina.
3) Quando cerco di saltare all'implementazione di una funzione che
risulta visibile in WizadBar e in ClassVieW il cursore si posiziona su
righe di codice che non centrano nulla... stessa cosa mentre debuggo
l'applicazione step by step il puntatore all'istruzione corrente non è
posizionato correttamente (me ne accorgo dal modo in cui cambiano le
variabili dopo ogni istruzione che eseguo).
Ho provato a chiudere e riaprire il progetto, a rebuildare tutto
(rebuild all), ma non è servito a niente.
Cosa succede??
Ringrazio anticipatamente.
P.S. mi sapete dire dove trovo le patch del Visual Studio sul sito
microsoft?
Ciao
--------------------------------------------------------------------------
Rimuovere --- per rispondere via e-mail
--------------------------------------------------------------------------

 con il Visual Studio... ecco i sintomi....
Prova a controllare le date dei tuoi sorgenti e quella della tua macchina, e cancella
completamente dal filesystem la directory Debug.
Spero cio' ti aiuti.
Saluti,
    CS
--
Cristiano Sadun - Software Engineering and Consulting
***********Remove NOSPAM from address to reply***********
*********************************************************
"God is Real - unless declared Integer"

Newsgroup: it.comp.lang.c++
Titolo: Help sui DB in Borland C++ Builder

Ciao a tutti,
qualcuno saprebbe dirmi come, una volta eseguita una query, posso
visualizzare il contenuto del primo record del risultato della query?
Mi sareste di grande aiuto, grazie..

visualizzare il contenuto del primo record del risultato della query?
Usa un campo data-aware e porta la query sul primo record, cioe':
Query1->First();
Oppure, dopo il First(), preleva i valori che ti servono come faresti per le
table normali:
value = Query->FieldByName("NOMECAMPO")->Value;
--
Stefano Tempesta
PC Service Software
http://www.tempesta.cc.st
s.tem...@pcs-online.it
Newsgroup: it.comp.lang.c++
Titolo: programma "conta parole"

ciao a tutti,
ho fatto questo semplice algoritmo che (dovrebbe) visualizzare il numero di
spazi e quindi di parole presenti in una stringa.
Putroppo la variabile blank non viene mai incrementata....
[code]
#include <stdio.h>
#include <iostream>
#include <string>
int const n=80;
int main(int argc, char *argv[])
{
  char s[n];
  int i;
  int blank;
  cout<<"Inserire stringa:";
  gets(s);
  cout<<s;
  blank=0;
  for (i=0; i<n; i++);
  {
    if (s[i]==' '){
    blank=blank+1;
    }
  }
  cout<<"spazi:"<< blank;
  system("PAUSE");
  return 0;
}
[/code]
ciao!


Metti davanti a tutti i tuoi cout la parolina magica std::
altrimenti con un compilatore conforme allo standard il tuo prog dara'
errori in quanto cout e' nascosto nel namespace std
Ciao
Maurus

 for (i=0; i<n; i++)
ora c'è un altro problema: se non inserisco alcuna stringa dice che sono
presenti 2 spazi!!! Se metto uno spazio tra due parole mi visualizza 3!
come mai???
ciao!

     blank=blank+1;
puoi utilizzare blank++.
Inoltre ti consiglio di controllare il terminatore della stringa [0] per
uscire dal for.
Per intenderci :
while(!str[i])
{
  ...
}

 wrote in message
news:asndia$nn5$1...@newsreader.mailgate.org...


 wrote in message
news:asndts$nvq$1...@newsreader.mailgate.org...


  while(!s[i]) // se trova il terminatore esce
con il tuo codice blank vale sempre zero..:-((
ciao!

 wrote in message
news:%TKH9.44054$qF1.1...@news2.tin.it...

Newsgroup: it.comp.lang.c++
Titolo: Libro c++

Potreste consigliarmi un buon libro per imparare il C++?
Grazie e ciao a tutti
Spike

 
Thinking in C++ di Bruce Eckel, lo puoi scaricare in formato PDF dal 
sito 
www.eckelobjects.com
 e acquistare in versione cartacea (č un 
ottimo libro, ne vale la pena, magari dopo aver dato un'occhiata al 
PDF).
-- 
Valter Minute
vmi...@inwind.it
 (the reply address of this message is invalid)

Si, č molto buono come testo, purtroppo č in inglese.
"Valter Minute" <vmi...@REMOVEMEinwind.it> ha scritto nel messaggio
news:Xns923B66702E...@212.110.0.170...



Uno in italiano ? Il Deitel -Deitel com'č? Quello per il C č fatto molto
bene .
Fatemi sapere.
Spike

Il Deitel ha il vantaggio di avere molti esempi e tutti gli argomenti
speigati abbastanza in dettaglio, l'unica pecca č che č scritto in un
italiano orrendo!
Ciao
Francesco

 
Personalmente preferisco leggere un testo in inglese che alcune delle 
abominevoli traduzioni in italiano, ma č questione di gusti, anche se 
la maggior parte della documentazione e del materiale disponibile sia 
in formato cartaceo che in formato elettronico č disponibile solo in 
inglese e quindi prima o poi tocca litigarci :)
P.S. quando rispondi a un messaggio non riportare tutto il testo del 
messaggio a cui rispondi e, se devi riportare dei paragrafi, riportali 
_prima_ dei tuoi commenti.
http://www.uwasa.fi/~ts/http/quote.html



Oltre a "Thinking in C++" di Bruce Eckel, gratuito in versione elettronica
da
 
www.eckelobjects.com
 ,
ti consiglio il libro cartaceo "C++ primers" di Lippman Lajoie, non ricordo
il titolo in italiano.
Fuggi via da tutti i libri di Schildt anche se li trovi in qualsiasi
libreria italiana.
Poi ovviamente come riferimento prendi anche la bibbia di Stroustrup, ma
solo dopo che avrai studiato uno dei 2 che ti ho scritto.
Maurus

 il titolo in italiano.
B. Lippman-Lahoje, C++ Corso di Programmazione, 3a ediz." Addison-Wesley
Ottimo!!
--
Lello Mele
--
HOMEPAGE: 
http://www.lellomele.it
eMAIL   : lellomele@nospam@
libero.it

 Ottimo!!
OK. Prenderò quseto allora.
Ciao e grazie
Spike

 abominevoli traduzioni in italiano, ma č questione di gusti, anche se
Piů che questione di gusti č che forse capisci l'inglese!
Newsgroup: it.comp.lang.c++
Titolo: Problema sugli indici

Salve a Tutti
Avrei un piccolo problema con un ciclo su un std::vector<double>
Ho un ciclo for del tipo
 for( std::vector<Budget>::size_type i=0; i != dataset.size(); ++i)
il problema nasce dal fatto che devo utilizzare l'indice del vettore
per fare un calcolo del tipo
pluto =  1/sqrt( i );
quando l'indice è zero ho qualche cosa che non mi soddisfa
come posso fare per utilizzare tutto il vettore partendo da 0 anziche
fare la furbata di partire
dalla posizione successiva cioè la 1;
sono obbligato ad usare ad esempio
if( i==0)  pluto = 1/sqrt( i+1);   ?
oppure cosa posso usare?
Tnx


Salve,
Il tutto dipende dell'uso che si fa di "pluto". Senza informazione
aggiuntiva è difficile suggerire il metodo da usare.
Saluti.

 - Mostra testo tra virgolette -
....pluto è utilizzato per un altro calcolo del tipo
if( result < ( 1-alpha) * pluto){...etc....
pluto result e alpha sono variabili di tipo double.
Tnx


Chiedo scusa non mi sono spiegato bene.
Lei assegna un peso alla posizione di ogni elemento secondo una logica
che è impossibile da dedurre dal messaggio. Si potrebbe consigliare di
usare 1/(sqrt(i+1)) per tutto il vettore, o di usare un'altra
funnzione che non abbia una singolarità a i=0. Ma non si puo' sapere
se va bene per la logica della sua applicazione.
Saluti.


Non posso usare un' altra funzione perchè il vettore devo scandirlo
dalla posizione iniziale con indice zero ( i=0).
il problema è che se io assegno a pluto il valore corrispondente al
primo indice (i=0)  il valore di è pluto = 1.#INF  per capirci
for( std::vector<Budget>::size_type i=0; i != dataset.size(); ++i){
.......
pluto  = 1/sqrt( i);
 ......
//prima del Test pluto vale =1.#inf
        if( result < ( 1-alpha) * pluto){
         .....
        }
e da questo valore non ci muoviamo più.
   Tnx

         }
Quando i vale 0, la porzione di codice XXX deve essere eseguita oppure no?
E se si', la variabile "pluto" viene usata al suo interno oppure no?
E se si', quanto deve valere?
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

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

So che è pirateria e non dovrei neanche pensarlo, ma non ho altro modo:
potreste postarmi o dirmi dove trovare il Tasm fornito con il Borland Turbo
C++ 1.01?
Ho necessità di inserire codice assembler in un programma C++ e non posso
utilizzare il Visual C++ 6.0 perchè lavora con gli indirizzi flat (leggi:
usa la memoria a pagine e non la memoria segmentata).
Sperando che questo msg non scateni dei flame, ringrazio chi si interesserà

Ringrazio tutti coloro che si sono interessati e vi avverto che la mia
richiesta è già stata esaudita, così non mi invierete files a vuoto
Thanks, Giuseppe
Newsgroup: it.comp.lang.c++
Titolo: Aiuto strutture...

Scusate,ma non riesco ha modificare con scanf il valore dell'elemento
stringa inizializzato in precedenza.
Dove sbaglio?
Grazie.
#include <stdio.h>
main()
    {
    struct dati{
           char stringa[81];
           char a;
           char *ptstringa;
          }info={"Inizio",40,"Inizipunta"};
    info.ptstringa=info.stringa;
    scanf("Digita la Stringa:",info.stringa);
    printf("Output:%s\n",info.ptstringa);
    }


Ciao,
Andrea.

        scanf("Digita la Stringa: %s ",info.stringa);
Spero tu stia scherzando ;)

 wrote in message 8t2hgc$552$1...@nslave3.tin.it...

Prova questo:
printf("Digita la Stringa:");
scanf("%s",info.stringa);


Newsgroup: it.comp.lang.c++
Titolo: Come ottenere il nome della classe di un oggetto?

Chi sa come ottenere il nome della classe di un oggetto?
Specifico che l'oggetto è senza finestra (ovvero, non è una classe
finestra).
Ringrazio in anticipo chiunque voglia aiutarmi.



Se l'oggetto non prevede un metodo che restituisca
il nome della classe cui appartiene, non ci sono possibilita`, salvo
probabilmente ricorrendo all'RTTI.
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  La vita e` quella cosa che ci accade mentre
  siamo occupati a fare altri progetti. (A. De Mello)
------------------------------------------------------------------

 
Puoi utilizzare la Run Time Type Information (RTTI) del C++ standard.
In generale se hai una classe MyClass puoi ottenere una stringa che 
rappresenta il nome a partire dall'identificatore della classe o da quello 
di una sua istanza o puntatore:
#include <typeinfo>
MyClass mc;
MyClass* pmc;
char* ClassName = typeid(MyClass).name();
// oppure
ClassName = typeid(mc).name();
// oppure
ClassName = typeid(*pmc).name();
Se usi C++Builder hai anche la RTTI della VCL, valido naturalmente solo per 
tutte le classi derivate da TObject, che è un sistema analogo alla 
reflection Java, da cui puoi ottenere anche informazioni sulla proprietà di 
una classe e altro. Usando questa RTTI puoi ottenere il nome scrivendo:
TMyClass* mc = new TMyClass;
String ClassName = mc->ClassName();
Notare che il metodo ClassName restituisce il tipo Pascal SmallString, 
convertibile implicitamente a AnsiString (o semplicemente String, usando 
l'alias).
___________________________
Paolo
Newsgroup: it.comp.lang.c++
Titolo: Nome Funzione chiamante

Salve, 
se ho tre metodi: 
a(), non statico, 
b(), non statico,
c(), statico,
c'e' un modo in c++ per sapere all'interno del metodo c(), se c() e'
stato chiamato da a() oppure da b()?
gazie, delio
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 stato chiamato da a() oppure da b()?
Certo: basta passargli un parametro che abbia un valore diverso nei
due casi.
Ciao,
Nicola
P.S. No, il nome della funzione chiamante non e' disponibile. D'altra
parte scomodare meccanismi di riflessione/introspezione per un
problema del genere sarebbe insensato anche in un linguaggio che ne
fosse provvisto.

 stato chiamato da a() oppure da b()?
Si, passargli un parametro aggiuntivo che indichi da chi e' stato chiamato.
--
Marco

 fosse provvisto.


 Come posso fare?
In C++ standard non esiste. A mio avviso pero' la classe dei problemi
per i quali la riflessione e' la soluzione corretta e' piuttosto
limitata. Prova a spiegare cosa intendi fare.
Ciao,
Nicola

 Nicola


 questo e stampare sul file log "error in a()"
Il linguaggio standard ti mette a disposizione solo le macro
predefinite __FILE__ e __LINE__ per individuare il file sorgente ed il
numero di riga. Strumenti specifici possono mettere a disposizione
altre macro, ad esempio VC++ ha __FUNCTION__, __FUNCSIG__ e
__FUNCDNAME__ (se hai VC++, puoi guardarle sull'help ;-)
Ciao,
Nicola

 di questo e stampare sul file log "error in a()"
Ti hanno dato già alcune soluzioni. Io vorrei chiederti perchè non usare un
debugger. In linguaggi estremamente dinamici e di alto livello (dove hai
riflessione e tutto), spesso si fa prima come dici tu, loggando le
informazioni rilevanti e usando quelle per lavorare.
In C++ la riflessione, come ti hanno detto, non esiste. E ci sono ottimi
motivi per cui non esista (in primo luogo di efficienza). Inoltre, se ci
pensi bene, è *quasi* sempre sbagliato scrivere funzioni che dipendono in
modo 'incontrollato' (ovvero fuori dalla loro interfaccia) da chi le
chiama.
E' il problema principale dello scoping dinamico di linguaggi come Perl (e
infatti si sono inventati il my *e* use strict;). In generale tu vuoi che
una funzione si comporti allo stesso modo ogni volta che lo stato (e non lo
storico) del programma si trova in un certo punto.
Nel tuo caso ovviamente la cosa ha senso, poichè stai solo loggando. Ma ti
trovi comunque a sporcare le interfacce (cosa che io non farei, a meno di
pensare *estremamente* bene la cosa), o comunque a scrivere un bel po' di
codice.
Io andrei di debbuger, se possibile.
Newsgroup: it.comp.lang.c++
Titolo: librerie

Volevo chiedere il vostro aiuto riguardo alla modalità d'uso delle librerie.
Costruita una libreria tipo .obj (statica) che contiene la classe vector,
desidero utilizzare tale classe nel mio codice. Ovviamente il compilatore mi
dice che non conosce l'identifier vector; allora specifico nelle opzioni del
progetto la directory dove può trovare degli .obj files o (in visual c++)
specifico il file .obj che mi interessa. Non basta. Mi rendo conto che
probabilmente devo fare una qualche dichiarazione all'inizio del mio file
header dicendo che vector lo si trova altrove. Giusto?  E come si fa?
Grazie
Stefano

header dicendo che vector lo si trova altrove. Giusto?  E come si fa?
Esattamente.
Nel sorgente che utilizza le funzioni o le classi contenute nella libreria
devi includerne la relativa dichiarazione. Generalmente si scrive un
VECTOR.H (ad es.) con la dichiarazione, che puo' essere utilizzata sia dalla
libreria (dove la classe e' implementata), sia dal programma dove la classe
e' utilizzata.
Ad es.
VECTOR.H
class Vector
{
     // blah, blah
};
VECTOR.CPP
#include "vector.h"
Vector::Vector()
{
   // blah, blah
}
MAIN.CPP
#include "vector.h"    // oppure <vector.h> se metti la libreria da un'altra
parte
int main(int argc, char* argv[])
{
   Vector x;
   // blah, blah
}
NOTE:
- normalmente le librerie sono .LIB, comunque puoi "linkare" anche i ".OBJ"
direttamente
- se metti la libreria in una directory diversa dal programma che la usa
devi - naturalmente - indicarlo nella configurazione del tuo compilatore
Ciao,
Angelo.

progetto la directory dove può trovare degli .obj files o (in visual c++)
Gli OBJ servono al momento del link, ma, per compilare, occorre
che i sorgenti che usano vector includano lo header-file dove tu
hai dichiarato la classe vector in questione (magari vector.h, o
comunque altro tu l'abbia chiamato).
Alex
Newsgroup: it.comp.lang.c++
Titolo: domande strabanali

Salve a tutto il ng...
utilizzando il DevC++..come si fa a pulire lo schermo?
ho provato con clrscr() della libreria conio.h ma lo schermo non viene
pulito...
ultima cosa... qual è la libreria grafica da utilizzare sotto DevC++?
In Turbo C++ utilizzavo graphics.h ma in Dev non la trova...
Il programma che devo fare deve girare sotto DOS...ma purtroppo non posso
utilizzare Turbo C++ perchè non trova il container vector...che a me serve
invece.....
ciao a tutti

invece.....
Dev-C++ con mingw non compila per dos.
-- 
Marco Barisione (ICQ 84277092)

 ha scritto nel
messaggio news:hin97uc0tdhcqtdf7...@4ax.com...


utilizzare l'header di mingw su Turbo C++
Non funzionerebbe Turbo C++ mi pare non supporti i template in nessuna
versione.


Newsgroup: it.comp.lang.c++
Titolo: MFC 4.2.6256 - dove trovarle??

Ciao a tutti,
Dove posso trovare le
Microsoft Foundation Class 4.2 build 6256 ??
Ho bisogno di questa specifica versione. L'ho cercata nella rete per un
sacco di tempo, ma senza successo.
Vi prego aiutatemi.
Grazie,
email: 
bo...@unive.it
Waist-Gunner

Ciao,
Questo newsgroup si occupa del lingaggio 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 Linux:      it.comp.linux.development
                it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
forums.borland.com
 (in inglese)
Grazie,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: int to char[]

Ciao,
devo convertire un int in un char[], potete consigliarmi la
funzione da usare?


sprintf o, meglio snprintf (non ricordo se sono entrambe standard o solo 
la prima).
Cmq, google e le FAQ penso ti potessero dare da sole le risposte.
-- 
/**
  * 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
  */

 sprintf o, meglio snprintf (non ricordo se sono entrambe >standard o solo
C'è anche itoa()
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 C'è anche itoa()
...ma non è standard! solo per win/dos

Newsgroup: it.comp.lang.c++
Titolo: HELP: File Created, Modified and Accessed Dates.

Hello,
By trade I am a Natural Mainframe programmer, with a little experience of VB
(32-bit) and VC++.
I am currently writing a set of VB and C++ routines to manipulate text files
for a friend, in which he wants to be able to change the Created, Modified,
and Accessed dates, for archival purposes.
As I don't know how to do this, I was wondering if anyone reading this
newsgroup did, and could e-mail me some example source code on how to do
this (preferably without having to use any DLL calls or anything like that,
as I don't know that much C++).
Any responses would be greatly appreciated, as long as they are e-mailed, as
I can only connect to this group infrequently.
Thanks in advance,
Adam M.
adm...@globalnet.co.uk
adm...@gateshead.ac.uk

and Accessed dates, for archival purposes.
it.comp.lang.c++, as the initial component suggests, is for
posts in *Italian* about C++ -- English posts are inappropriate
here.  Anyway, just check SetFileTime in the online docs --
it does just what you need.
it.comp.lang.c++, come suggerisce la componente iniziale,
e` per post in *italiano* sul C++ -- i post in inglese sono qui
inappropriati.  Comunque, controlla SetFileTime nelle doc
online -- fa proprio quel che ti serve.
Alex

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

Salve.
E' possibile gestire in c++ array dinamici?
Dovrei implementare un piccolo programmino per l'import di un file .dbf
in un database sql.
A tal proposito utilizzo questa fuznione:
void leggiDBF(){
  ifstream aFile("file", ios::in | ios::binary);
  aFile.seekg(32);
  char *aRec = new char[32];
  while (1){
    aFile.read(aRec, 32);
    if(aRec[0] <=32 || aFile.eof()) break;
    int len = arec[16];
ecc.
Ora len contiene la lunghezza del singolo campo che mi serve
successivamente per estrarne il contenuto.
Vorrei quindi poter conservare (se mi suggerite soluzioni migliori ben
vengano) i vari valori di che man mano vengono memorizzati in len in un
vettore che pero' non posso sapere a priori quanto deve essere grande.
Cosa mi dite?
Grazie.
--
Posted from 
crux.tiscalinet.it
 [195.130.224.59]
via Mailgate.ORG Server - 
http://www.mailgate.org

 E' possibile gestire in c++ array dinamici?
Si. Nella libreria standard trovi il tipo std::vector che penso faccia
proprio al caso tuo.
EMG

E' possibile gestire in c++ array dinamici?
Come dice Lippman: "The standard array is a vector"
-- 
Roberto Gerola
Email: 
robert...@penguinpowered.com
WWW: 
http://www.penguinpowered.com/~The_Cpp_Compass

> E' possibile gestire in c++ array dinamici?
ti consiglio vivamente l'utilizzo dei containers della libreria standard,
tipo array, list, ecc.
TobiX
Newsgroup: it.comp.lang.c++
Titolo: OpenGL

Essendo autodidatta e volendo prg videogiochi sto iniziando a studiare le OpenGL visto la
maggior flessibilita' e facilita' di programmazione.
Tuttora ho trovato veramente pochi tutorial che spiegano come utilizzare queste librerie e
solamente un tutorial (in inglese) che spiega in maniera piu' razionale, rispetto agli altri
tutorial, ma poco soddisfacente.
Vorrei qundi chiedervi se voi siete in possesso di url o file di tutorial su OpenGL.
N'altra domanda che vorrei farvi e' la sequenze.
Per creare una finestra con OpenGL la sequenza e' lunga (neppure la scrivo)...
ho messo la creazione in un file e lo chiamato finestra.h
Quando applico la libreria nel mio prg mi da errore nella libreria...
vorrei sapere come faccio a creare una libreria.
Se vi serve l'errore e il contenuto della libreria posso postarla.
Adesso una domanda stupida :-)
cos'e' #pragma???
Ultima domanda!!!
Non ho capito bene la funzione di questa stringa:
int oglSetPixelFormat(HDC hDC, BYTE type, DWORD flags)
******
{
    int pf;
    PIXELFORMATDESCRIPTOR pfd;
    /* fill in the pixel format descriptor */
    pfd.nSize        = sizeof(PIXELFORMATDESCRIPTOR);
    pfd.nVersion     = 1;      /* version (should be 1) */
    pfd.dwFlags      = PFD_DRAW_TO_WINDOW | /* draw to window (not bitmap) */
                       PFD_SUPPORT_OPENGL | /* draw using opengl */
                       flags;               /* user supplied flags */
    pfd.iPixelType   = type;                /* PFD_TYPE_RGBA or COLORINDEX */
    pfd.cColorBits   = 24;
    /* get the appropriate pixel format */
    pf = ChoosePixelFormat(hDC, &pfd);
    if (pf == 0) {
       MessageBox(NULL,
    "ChoosePixelFormat() failed:  Cannot find format specified.",
    "Error", MB_OK);
       return 0;
    }
    /* set the pixel format */
    if (SetPixelFormat(hDC, pf, &pfd) == FALSE) {
 MessageBox(NULL,
     "SetPixelFormat() failed:  Cannot set format specified.",
     "Error", MB_OK);
        return 0;
    }
    return pf;
}
******
Grazie in finite.
-=NT SPP Member=-
www.spippolatori.com

cos'e' #pragma???
#pragma è una direttiva del preprocessore utilizzata per settare delle
opzioni non standard, proprie del tuo compilatore. Infatti, quando il
preprocessore trova questa direttiva con un opzione che non conosce, invece
di generare un errore (come farebbe con altre direttive con paramentri
incorretti) semplicemente la ignora e passa avanti.
Ciao, Giuseppe
PS. La domanda non era stupida.
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------

 incorretti) semplicemente la ignora e passa avanti.
Grazie
-=NT SPP Member=-
www.spippolatori.com
Newsgroup: it.comp.lang.c++
Titolo: differenze tra visual c++ e c++

Salve a tutti.
Volevo solo sapere quali sono le differenze tra c e c++. Inoltre
vorrei sapere quali delle due soluzioni e' meglio adottare per un
principiante di c++.
Ringrazio. Cordiali saluti
Web_Voice
 "non un volto, nemmeno un corpo,
  ma solo un pensiero che scorre su di un filo"
IHGGer n°413

principiante di c++.
Tra VC++ e C++ (premesso che il VC++ e` una implementazione del
C++)? O tra C e C++?
In entrambi i casi concentrati sul C++ senza alcun riferimento a windows
realizza semplici programmi per dos) e comunque sempre se il C++ non
e` il tuo primo linguaggio di programmazione (in tal caso e` meglio
iniziare con qualcos'altro: pascal, Java...)
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

 principiante di c++.
Se sai già programmare allora ti consiglio il C++ altrimenti forse ti
conviene iniziare da un linguaggio più semplice, forse neanche dal C
(Pascal?).
EMG

principiante di c++.
AAAArgh! Errore! Scusate ho sbagliato di scrivere...intendevo tra
Visula C++ e C++.
Lo stesso vale per cio' che mi consigliate: se e' meglio iniziare con
un C++ o un Visual C++ ( che a prima vista sembra che con il Visual
anche un bambino possa costruire un'applicazione...).
Scusate ancora ed attendo numerose le vostre risposte.


 anche un bambino possa costruire un'applicazione...).
Forse conviene apprendere prima lo standard e fare pratica su di un
compilatore generico come il DJGPP. Solo in un secondo tempo passare ad
una piattaforma specifica.
EMG

Scusate ancora ed attendo numerose le vostre risposte.
Visual C++ e' un compilatore C con tutti i relativi tools+un'ambiente di 
sviluppo visuale+sdk windows+varie librerie+parecchi wizard che creano codice 
che fa uso di queste librerie.
Non e' difficilissimo, manuali alla mano, rendersi conto di cosa' e' C++, cosa 
e' SDK e cosa libreria. E' indicato abbastanza chiaramente anche nei vari help 
in linea. Certo, se proprio si parte da zero e' possibile confondersi, ma se 
appena appena leggi un buon libro su C++ non credo sia tremendamente complesso 
fare la distinzione.
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/

>Visula C++ e C++.
Ah, ecco, il Visula C++... meno male che ti sei corretto.  :))

Ah, ecco, il Visula C++... meno male che ti sei corretto.  :))
Incorreggibile.

Newsgroup: it.comp.lang.c++
Titolo: E' difficle?

Secondo voi è difficile fare un programmino per mixare file mp3?
Ciao

 Ciao
Secondo me:
1) E' relativamente facile se sai come decomprimere e ricomprimere il formato
mp3 e come gestire un file audio.
2) Il risultato e' comunque di scarsa qualità
3) Se sai fare quanto richiesto al punto uno, non avresti fatto questa domanda.
4) Se non sai quanto richiesto al punto uno:
4.1) Non e' facile farlo
4.2) E' molto difficile che trovi le risposte in questo NG
--
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

Dove dovrei allora cercare risposte?
Secondo te il problema sta anhe nel linguaggio o solo negli mp3?
Andrea Ferro <And...@UrkaDVD.it> wrote in message
9bau4h$rvl$1...@serv1.iunet.it...


>Dove dovrei allora cercare risposte?
Dipende dal tuo problema.
Problemi con lo standard mp3? Non qui, qui si parla di C++. Cerca un gruppo
sull'mp3 o cerca su internet.
Problemi con linguaggio? Se è C++, e se il problema è proprio il C++ e non -
ad esempio - librerie che non sai bene come usare, chiedi qui.
Lanugo

Newsgroup: it.comp.lang.c++
Titolo: Strutture dati in c++

Ho provato a cercare dei siti sulle strutture dati in c++ ma la ricerca
è stata vana.
Avete dei link?
-- 
Non c'è più forza nella normalità, c'è solo monotonia.

http://www.sgi.com/Technology/STL/
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Funzioni che ritornano array e passaggio di array parametri reference

Qualcuno potrebbe farmi un semplice esempio di come poter costruire una
funzione che ritorna una stringa come array di caratteri? Mi basterebbe un
esempio semplicissimo e vedere come si scrive il suo prototipo.
Avrei anche un'altra domanda, vorrei sapere se č possibile passare array
come parametri reference.
Grazie moltissimo a tutti.
Luca Carlon


Cesare

 più versatile passato in questo modo.
quindi, esempio pratico, se io ho una funzione di questo tipo:
tipo nome_funzione ()
{
  char stringa[30] = "Stirnga di testo";
  return; // che cosa devo scrivere qui?
}
come faccio a fare ritornare alla funzione nome_funzione quello che c'è
scritto in stringa? Diciamo che la main sia:
void main()
{
  cout << "Sotto scrive Stringa di testo\n";
  cout << ""; // cosa devo scrivere qui?
  return;
}
Grazie infinite per la tua risposta.
Luca Carlon

 }
La variabile 'stringa' è dichiarata localmente alla funzione:
ciò significa che viene distrutta quando la funzione ritorna il controllo alla
funzione chiamante (la main() nel nostro caso).
Dunque la funzione non può tornare 'stringa'.
Per poter tornare un array di char puoi agire in tre modi:
1) all'interno della funzione chiamata allocare dinamicamente
un array di char e restituire il puntatore a esso
oppure
2) passare alla funzione un puntatore ad un array (che può essere anche un array
statico), sufficientemente grande per contenere l'informazione
che ci si attende dalla funzione, e lasciare alla funzione il solo
compito di determinarne il contenuto
oppure
3) usare un array globale. Questi può essere un array statico
(sufficientemente grande come detto precedentemente) o uno dinamico,
intendendo con ciò un puntatore: la responsabilità di gestione
della memoria puntata (in particolare l'allocazione) può essere demandata
alla funzione chiamante o a quella chiamata...
Ciao.
Marco.

Newsgroup: it.comp.lang.c++
Titolo: push di coda dinamica

ragazzi secondo voi cosa c'è che nn va?
quando stampo ottengo solo il primo elemento .....
void push(persona a)
		{
			if(primo==NULL)
			{
				primo = new nodo;
				copiadati(primo->p,a);
				nel++;
			}
			else
			{
				nodo* s=primo;
				while(s != NULL)
				s=s->next;
				s=new nodo;
				copiadati(s->p,a);
				s=s->next;
				nel++;
			}
		}
chiedo un vs. parere

                                 s=s->next;
CORRIGE:
 nodo* c = new nodo;
 copiadati(c->p, a);
 s->next = c;



intendi così?
void push(persona a)
		{
			if(primo==NULL)
			{
				primo = new nodo;
				copiadati(primo->p,a);
				nel++;
			}
			else
			{
				nodo* s=primo;
				while(s != NULL)
				s=s->next;
				nodo* c=new nodo;
				copiadati(c->p,a);
				s->next=c;
				nel++;
			}
		}


mi ritorna un segmentation fault!

> mi ritorna un segmentation fault!
acc!
s stà già puntando a NULL quindi l'istruzione
s->next=c;
tuona!
devi mantenere una variabile con il puntatore all'ultimo oggetto
valido (es. una sOld)
Esempio:
....
else
{
 nodo* sOld;
 nodo* s = primo;
 while (s != NULL)
 {
  sOld = s;
  s = s->next;
 }
 nodo* c=new nodo;
 copiadati(c->p,a);
 sOld->next=c;
}
(fra parentesi: io avrei scritto il codice in modo un po' diverso)
prova un po'...

Newsgroup: it.comp.lang.c++
Titolo: VC++ 6: introductory ed. - togliere il popup

C'e' qualche sistema/crack per non far comparire
l'odioso popup che appare ogni qualvolta si
lanciano eseguibili compilati con Visual C++ 6.0
Introductory Edition?
Senno' me ne torno ad Anjuta sotto Linux
Come vogliono questi di M$ che uno inizi
ad imparare/usare i loro programmi?
Ciao e grazie

 wrote

Ammetto di non conoscere per nulla questa versione.....
Pero'...non ti capisco, a quanto pare, lo scopo di tale versione e' proprio
quello.... essere in omaggio con libri (o simile) e permetterti di imparare
senza pero' produrre software professionale. Non vedo cosa ci sia di
sbagliato.
Dal sito microsoft puoi scaricare gratuitamente il compilatore del VC++.NET,
solo il compilatore non il programma con ide, help etc... questo NON ha la
limitazione dell'introductory edition (che non conoscevo, ma mi sembra una
buona trovata!)
Poi se vuoi tornare sotto linux, fallo pure, g++ e' migliore del VC++6 per
imparare il C++ standard (il 6 e vecchio, g++ comparato con VC++7.1 sono
alla pari a mio avviso).
Tommy