2011-01-06 3 views
0

si j'ai la classe CAnalyzer, et que je veux faire un pointeur de cette classe vers le nouveau nom de classe CManager. comment puis-je le faire? note: j'ai besoin de faire le pointeur dans init func dans CAnalyzer. grâceC++ pointer class

+0

Si vous avez un CAnalyzer de classe, vous utilisez la convention de nommage Microsoft icky où chaque classe commence par un 'C'. Si vous décidez de le changer d'une classe à une structure, vous devrez changer CAnalyzer en SAnalyzer ** dans chaque fichier qui fait référence à CAnalyzer **. Mieux vaut ne pas encoder les types de données dans les noms. –

+0

@Thomas: "class" n'est pas un type de données. – ltjax

+0

@Itjax: veuillez indiquer votre référence. "Avec la programmation orientée objet, un programmeur peut créer de nouveaux types de données pour répondre aux besoins de l'application.Un tel exercice connu sous le nom" abstraction de données "et le résultat est une nouvelle classe de données.", Http://searchsoa.techtarget.com/definition/data-type –

Répondre

0

Par init func, vouliez-vous dire le constructeur?

CAnalyzer::CAnalyzer() 
{ 
    CManager *pManager = new CManager(); 
} 
3
class CManager; // Forward declaration (may not be needed) 

class CAnalyzer 
{ 
    // Other stuff goes here 

private: 
    CManager *p_manager; 
}; 

Je ne comprends pas ce que vous entendez par « je dois faire le pointeur à l'intérieur d'initialisation func dans CANalyzer ».

+0

+1 Je n'étais pas sûr non plus, mais votre supposition pourrait être plus juste que la mienne –

0

Je ne suis pas sûr de comprendre exactement ce que vous demandez, donc je vais deviner.

Vous souhaitez écrire une fonction membre de CAnalyzer qui renvoie un pointeur sur une nouvelle instance d'un CManager? Vous pouvez le faire comme ceci:

CManager* CAnalyzer::CreateManager() 
{ 
    return new CManager; 
} 

Vous devez cependant utiliser des pointeurs intelligents plutôt que des pointeurs bruts dans l'intérêt d'une programmation robuste.

+0

Cela ne devrait-il pas être CreateManager? – Puppy

+0

@DeadMG: Oui, probablement. Fixé –