2009-01-06 7 views

Répondre

8

Comme indiqué dans les autres réponses - les deux seront toujours NULL après l'appel. Cependant, il y a deux solutions possibles à ce problème:

1) références

void assignObject(ClassA*& pa, ClassB*& pb) 
{ 
    pa = new ClassA; 
    pb = new ClassB; 
} 

ClassA* pa = NULL; 
ClassA* pb = NULL; 
assignObject(pa, pb); // both will be assigned as expected. 

2) pointeurs

void assignObject(ClassA** pa, ClassB** pb) 
{ 
    assert(pa != NULL); assert(pb != NULL); 
    *pa = new ClassA; 
    *pb = new ClassB; 
} 
ClassA* pa = NULL; 
ClassA* pb = NULL; 
assignObject(&pa, &pb); // both will be assigned as expected. 

La plupart des programmeurs choisiraient probablement des références parce qu'alors ils n » t besoin d'affirmer quoi que ce soit (les références ne peuvent jamais être NULL).

0

NULL, parce que vous passez la pointeurs en valeur.

+0

comment passer comme pointeur – yesraaj

+0

Peut-être que vous devriez changer la question ...? – Roddy

2
ClassA* pa = NULL; 
ClassA* pb = NULL; 

void assignObject(ClassA* &pa,ClassB* &pb) 
{ 
    pa = new ClassA; 
    pb = new ClassB; 
} 

Autre possibilité:

ClassA* pa = NULL; 
ClassA* pb = NULL; 

void assignObject(ClassA** pa,ClassB** pb) 
{ 
    *pa = new ClassA; 
    *pb = new ClassB; 
} 
3

Ils seront NULL, puisque vous les transmettre par valeur. Si vous voulez passer par référence, vous feriez ceci:

ClassA* pa = NULL; 
ClassA* pb = NULL; 
assignObject(ClassA*& pa, ClassB*& pb) 
{ 
    pa = new ClassA; 
    pb = new ClassB; 
} 

Remarque, je ne suis pas sûr de ce que vous essayez d'accomplir avec les variables globales. Ils ne sont jamais utilisés dans cet exemple, car les variables locales (paramètres de la fonction) les cachent.

Je pense que vous devez également déclarer un type de valeur de retour pour votre fonction afin qu'elle soit valide C++.

+0

l'exemple est juste un exemple – yesraaj

+0

@rajKumar: assurez-vous de poster un code valide; Sinon, vous pouvez vous retrouver avec des réponses trompeuses ou même incorrectes. –

Questions connexes