Newsgroup: it.comp.lang.c++
Titolo: Problema con creazione di oggetti

Ciao a tutti..
Ho creato una classe Vector tramite la quale vorrei gestire gli array
come se fossero degli oggetti veri e propri. Quindi ad esempio ci ho
messo dentro la funzione per inserire un elemento, cercare un elemento,
ordinare il vettore ecc...
Quindi come variabili private ci sono la lunghezza del vettore, un nome
ed ovviamente il vettore stesso di cui ho fissato il limite a 30 valori
(il vettore è di double).
Però non so come mai quando voglio creare un oggetto di questa classe in
un programma esterno, il compilatore (Visual C++ 6.0) mi dà l'errore
"binary '=' : no operator defined which takes a right-hand operand of
type 'class Vector *' (or there is no acceptable conversion)".
Eppure mi sembra che sia corretta la sintassi che uso:
Vector v=new Vector(10,"primo");
Bah... ditemi voi :)
Grazie mille
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Vector v=new Vector(10,"primo");
 >
io dico che se vuoi fare un oggetto dinamico new ha bisogno di un 
puntatore per allocare memoria, prova con :
Vector* v = new Vector(10,"primo");


 Eppure mi sembra che sia corretta la sintassi che uso:
Non è corretta. (Vieni da Java, tu?)
'new' restituisce un puntatore. Quindi, delle due, una:
   Vector   v( 10,"primo");
            /* oggetto automatico */
   Vector* v = new Vector(10,"primo");
          /* oggetto instanziato dinamicamente */
Max

 
E per richiamare le funzioni dell'oggetto come faccio?
*v.funzione()
è corretto?
Grazie tante per l'aiuto...


Roberto Vergallo wrote:

No non è corretto: se l'oggetto è dinamico (creato col new) devi fare
v->funzione();
se l'hai creato staticamente Vector v( 10,"primo"); devi fare
v.funzione();
ciao


 v.funzione();
Ok, 'pito...
Un'altro paio di domande... mettiamo il fatto che ho una funzione della
classe Vector che deve ritornare un oggetto Vector.
Se ho dichiarato all'interno di essa un oggetto
Vector *v=new Vector(/* ..parametri.. */);
e poi ci applico le relative funzioni, e giusto se lo faccio "ritornare"
in questo modo?
return(*v);
E poi: all'interno della classe Vector mi posso riferire all'oggetto
stesso tramite *this ?


 è corretto?
fammi il piacere.... o studi (e dove non capisci possiamo aiutarti) oppure
se non hai voglia di fare nulla, allora non vedo perche' noi dobbiamo aver
voglia di aiutarti....
Tommy

 dobbiamo aver voglia di aiutarti....
perché parli al plurale? quanti siete lě?
sbirish.

Calorosa accoglienza in questo ng...
Ho chiesto solo con gentilezza (ho sempre ringraziato) se qualcuno
potesse darmi una mano.
Ci ho solo scherzato un po' sopra, ma se a te ha dato fastidio ti chiedo
scusa...
Comunque quei problemini li ho risolti da solo, vi ringrazio lostesso
Ciao


 perché parli al plurale? quanti siete lě?
faccio finta la domanda non sia retorica....
con "nostro" intendo di coloro che frequentano il newsgroup.
non e' mi che con "nostro" io intenda parlare a nome di tutti, piu'
semplicemente dicosolo : "perche' mai le persone del newsgroup dovrebbero
perdere tempo per te?" Questa e' una domanda che dovrebbe farlo riflettere
sulla questione che volevo porre.
Tommy

 Grazie tante per l'aiuto...
E' vero, come ti hanno gia' detto non e' corretto, pero':
(*v).funzione()
lo e'. Sostanzialmente, e' solo che il "." ha una precedenza maggiore 
del "*", e quindi servono le parentesi.
La sintassi:
v->funzione()
e' solo zucchero sintattico (che tra l'altro si consiglia sempre di 
usare) per rendere piu' leggibile il tutto.
-- 
/**
  * 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
  */