2010-03-01 6 views
0

Mon projet a géré le code non géré &. J'ai écrit une classe cIVR en code managé, en la définissant dans un fichier cpp non managé. Le projet fonctionne bien depuis un certain temps. Maintenant, j'ai besoin d'appeler une fonction membre d'un des objets du tableau 'arrChannels' d'une autre fonction dans le même fichier. Pendant la définition de tableau, il ne me permet pas de déclarer statique en raison du code managé. Je veux donc passer une référence à mon tableau dans un pointeur global pour pouvoir accéder à la fonction de membre dans le fichier.Global ou pointeur dans C++ géré pour la classe personnalisée

J'utilise .Net 2008.

main() { 
    array<cIVR^>^ arrChannels = gcnew array<cIVR^>(num_devices); //MAXCHAN 
    for(int i=0; i< num_devices; i++) { //MAXCHAN 
     arrChannels[i] = gcnew cIVR(); 
} 

Je veux quelque chose comme ->

CIVR * ch; // global ch = arrChannels; // dernière dans le code ci-dessus

func2(int index) { 
    ch[index]->setNumber("123"); 
} 

Répondre

0

Mis à part le « ayant une approche globale est généralement pas une bonne idée de problème », le lieu correctement ch serait initialiser à l'intérieur main() après avoir créé le tableau.

Je recommande aussi fortement d'utiliser les prototypes corrects pour les fonctions que vous utilisez, par exemple:

int main() 

et

void func2(int index) 
+0

mais je ne peux pas utiliser arrChannels de func2? son inaccessible en raison de la portée – harisali

+0

Vous n'êtes pas censé utiliser arrChannels de func2. Vous êtes supposé _set_ch pointer vers arrChannels dans le constructeur après avoir initialisé le tableau là-bas et y accéder via ch. –

+0

comment je peux le faire? guide de plz. syntex i.e comment je peux utiliser arrChannels via le pointeur globle scope dans le fichier? – harisali

Questions connexes