Equivalent d'un pointeur C sur une class ou structure [Résolu]

Messages postés
101
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
18 février 2008
- - Dernière réponse : 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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
3
Merci
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 ) );

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
101
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
18 février 2008
0
Merci
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
Commenter la réponse de cs_sephiro