Newsgroup: it.comp.lang.c++
Titolo: Passaggio di variabili tra classi con Borland c++ 4.52

Sono un programmatore in ANSI C e Pascal.
Fino ad oggi ho sempre lavorato in DOS.
La programmazione ad oggetti non mi e' ancora molto chiara, e
programmare in Windows 95 ancora meno!
Vorrei sapere se qualcuno ha la bonta' di indicarmi qualche testo
specifico sul Borland C++ e la programmazione di Windows.
Altro quesito: Come faccio a passare il valore di una variabile di una
classe ad un' altra variabile di un' altra classe ?
Es:
class Pippo {
	public :
 
	char pluto[5];
};
class Minnie{
	public:
	char paperino[5];
	void assegna();
};
void Minnie::assegna()
{
	strcpy(paperino, pluto);	
}
// Certo, la sintassi non è proprio corretta, spero pero' che qualcuno
abbia capito il problema.
Ringrazio la WaltDisney e chiunque mi sappia aiutare
Grazie
Aldrovandi Alessandro
st...@gionet.it

classe ad un' altra variabile di un' altra classe ?
// Se non ho capito male il pb.
class Pippo {
private:
   char Pluto[5];          // I dati di solito li dichiaro privati
public:
   SetPluto(char *Value);  //I metodi che consentono l'accesso ai dati
   char *GetPluto(char *Value);
};
Pippo::SetPluto(char *Value) {
   strcpy(Pluto, Value);
};
char *Pippo::GetPluto(char *Value) {
   strcpy(Value, Pluto);
   return Value;
};
class Minnie {
private:
   char Paperino[5];
public:
   SetPaperino(char *Value);
   GetPaperino(char *Value);
};
// Analoghe dichiarazioni di Minni come da Pluto
Ora per procedere all'assegnamento ci sono due possibilità:
La prima: dichiarare una classe come dati dell'altra e quindi usare
all'interno della classe contenitore i membri (ma anche se il caso qui
citato è evidentemente esemplificativo non è una buona soluzione).
La seconda: dichiarare una terza classe dove inserire le due
precedenti.
class Paperopoli {
private:
    Minni var1;
    Pippo var2;
public:
   void Assign(void);
};
void Paperopoli::Assign(void) {
  char temp[5];
 
  var1.SetPaperino(var2.GetPluto(temp));
};
Non sono un esperto quindi non prendere per oro colato quanto sopra!!!
La sintassi non la garantisco nemmeno io.
Ciao.
--------------------------------------------------------------------------
Beretta Fabio A.                       Graduating in Aerospace Engineering
                                                     POLITECNICO DI MILANO
E-mail:                                               
fabio....@iol.it
Creative WebPhone Number:                             
fabio....@iol.it
My Web Pages:              
http://www.geocities.com/CapeCanaveral/Lab/2101
--------------------------------------------------------------------------

class UNO {
	public:
	char* pippo;
	...
};
class DUE {
	public:
	char* pluto;
	void assegna(UNO*);
	...
};
void DUE::assegna(UNO* pObj) {
	strcpy(pluto, pObj->pippo); 	// devi dirgli da che oggetto copiare
	...
}
Spero che funzioni,
CIAO
	Alberto.

Alberto Grati scrisse che l'encapsulazione dei membri di dati della
classe andasse a farsi fottere :)

class A {
private:
	char[5] a;
public:
	A();
	~A();
	friend void B::assegna(A*); // gli amici pero' sono da evitare.
};
class B {
private:
	char[5] b;
public:
	B();
	~B();
	void assegna(A* a) { int i(5); while(i--) { b[i] = (a->a)[i]; }}	
};

 };

 >         friend void B::assegna(A*); // gli amici pero' sono da evitare.
Alberto Grati risponde che le funzioni friend sono la negazione della
incapsulazione dei membri di una classe!   ;^ů
Semplicemente volevo dire che le classi non devono essere PER FORZA formate
da membri PRIVATI + accessors/mutuators, ma se devi accedere ad un membro
public devi sapere da quale oggetto andarlo a pigliare...
... tutto qui!
Sarebbe necessario vedere in che sontesto sono inserite le varie classi...
Se qualcuno ha da proporre un metodo rigoroso per decidere cosa č public e
cosa č private, si faccia avanti.
Saluti a tutti...
		Alberto.

                 Alberto.
Luis.
PS. Comunque non ci credo al fatto che su questo ng si parli di C++ e
non di compilatori, IDE, ed altre cose...
-- 
LEGAL NOTICE:
THE ABOVE INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DAMAGES
WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
LOSS OF BUSINESS PROFITS, OR SPECIAL DAMAGES, EVEN IF THE AUTHOR
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE AUTHOR
DOES NOT AUTHORIZE TO APPLY THE ABOVE INFORMATION IN STATES WHERE
THIS DISCLAIMER IS NOT APPLICABLE.
I'm known for been wrong in the past... I may be wrong again.
---
Luis E. Garcia Ontanon
mailto:
L...@Beer.com
http://www.concentric.net/~lontanon

Es:
#include <string.h>
class Pippo {
	public :
	char pluto[5];
  Pippo ()
	 {strcpy (pluto, "pluto");
	 }
};
class Minnie{
	public:
	char paperino[5];
	void assegna();
};
void Minnie::assegna()
{Pippo pip;
 // oppure Pippo *pip= new Pippo();
	strcpy(paperino, pip.pluto);
}
please remove NOSPAM from email address to write me.
/-------------------------------------------------------\
| DataDuck 5.1  Configurable DataBase and Plug-in Win95 | 
| also for Windows 3.1 and NT. Aim your Web browser at  | 
| 
http://www.prog.arch.unige.it/~aoddera/Homeao.htm
     | 
| to get your own copy!                                 | 
\-------------------------------------------------------/