Equivalent d'un pointeur C sur une class ou structure

Résolu
cs_sephiro Messages postés 101 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 18 février 2008 - 21 janv. 2007 à 20:59
cs_sephiro Messages postés 101 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 18 février 2008 - 22 janv. 2007 à 09:33
Bonjour
Je débute en C# (3 jours), je developpe en C (Win32) depuis pas mal de temps, je dois réaliser une appli en C# qui appelle mes ActiveX (faite en C win32), ma question n'et pas là.
Pour le moment je ne donnerai pas mon avis sur le C#, 3 jours ne sont pas suffisant pour voir la richesse d'un tel environnement.
J'ai écrit 3 class et un tableau de structure. Dans la 1er Class il y a un tableau de Class (la seconde ) et dans la 2 eme class il t a un tableau de structure et j'aimerai créé l'equivalent d'un pointeur sur le tableau de Class.
Ok un exemple:
 class  _ConfigData      // ma class principale
    {   public _Site[] Site= new _Site[50]; // tableau de Class
        public _ClsSites ClsSites;            // Class
    }
    
class     _Site {
     public long SiteID;
     public string SiteName;
     public long  NbCams;
     public _Camera[] Camera=new _Camera [100]; // Creation d'un tableau de structure de 100 valeurs
    }



struct _Camera {     // voici ma structure
        public long CamID;
        public long  CamType;
        public long CUID;
        public long Started;
       }
 class _ClsSites //une autre class
    {
        public _Site[] Site;
        public _Site Data;
        private long IdxSite=0;
        public long Count=0;
    }

j'ecris sans probleme dans ma structure meme si j'ai mis du temps pour comprendre qu'il fallais faire un New _Site() sur chaque ligne.
au final j'ai des données dans mon tableau de Class et j'aimerai en faire beneficier  une autre Class ClsSites sans copier les données une sorte de pointeur. en faisant par exemple ClsSites.Site=Site dans l'une des fonction de ConfigData et bien No ça marche pas.
Si quelqu'un a compris mon probleme Bravo s'il a une solution c'est encore mieu
Merci

2 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
21 janv. 2007 à 23:11
Salut, effectivement le plus dur c'est de comprendre la question je crois.  Je pense que tu as oublié d'appeler new sur ClsSite.

_ConfigData cd = new _ConfigData( );


for ( int i = 0; i < cd.Site.Length; i++ )
    cd.Site[ i ] = new _Site( );


cd.ClsSites = new _ClsSites( );
cd.ClsSites.Site = cd.Site;


MessageBox.Show( "ref equal : " + Object.ReferenceEquals( cd.Site, cd.ClsSites.Site ) );
3
cs_sephiro Messages postés 101 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 18 février 2008
22 janv. 2007 à 09:33
Merci Lutinore
c'est le type d'erreur que je n'aurai pas fait en Win32. ClsSite n'est qu'un pointeur sur Null si je ne fais pas de New il n'existe pas !!! C'est un peu deconcertant je recherche mes * partout !!! Il me faut un peu d'adaptation.

sephiro
0
Rejoignez-nous