2010-02-01 20 views
0

Salut je veux faire le prochainC++ comment? function_x (nouveau object1)

au lieu de

MyClass object; 
function_x (object); 

je veux

function_x (new object); 

donc quelle sera la structure du MyClass pouvoir fais cela .. si je l'ai juste compilé, il me donne une erreur de temps de compilation


réponse function_x (MyClass())

Nouveau Modifier Merci pour les réponses rapides .. J'ai demandé la mauvaise question, j'aurais demandé comment

variables temporaires créées en C++ et la réponse

Répondre

3

new est appelé sur les classes, pas d'objets. Et il renvoie un pointeur, donc à moins que function_x accepte un pointeur, c'est impossible.

Vous pouvez le faire si:

void function_y(MyClass* ptr) 
{ 
    // Do something 
} 

// Then call 
function_y(new MyClass); 

note quelques petites choses à ce sujet:

  1. Le constructeur par défaut de MyClass est appelée lors de sa création
  2. function_y doit garder le pointeur dans certains endroit accessible pour éviter une fuite de mémoire

Est-ce ce dont vous avez besoin, ou autre chose?

+0

oui désolé je l'ai écrit par erreur nouvel objet, il devrait être nouvelle classe mais après une autre recherche je recherchais quelque chose appelé (variables temporaires) qui ce que je avais besoin en premier lieu, mais ne pouvait pas être bavard (pardonnez mon mauvais anglais) de sorte que les objets temporaires sont quelque chose comme: function_x (MyClass()) directement et il n'y a aucun nouvel opérateur .. quand je programmais en java, nous avons utilisé de nouveaux MyClass –

+0

+1. Vous voudrez peut-être ajouter un peu plus sur les fuites de mémoire, le concept de propriété et d'équilibrage 'new' avec' delete'. – outis

0

new object retours object*, donc la signature pour function_x devrait être:

void function_x(object* obj) { 
} 

Et vous ne pouvez appeler l'opérateur new sur une classe, non pas des instances d'une classe.

0

Par modification, si vous voulez créer un objet temporaire, vous pouvez aimer ceci: function_x (MyClass());. Notez que vous ne pouvez pas modifier cet objet temporaire afin que votre fonction_x prenne ce paramètre par const-référence.