2010-01-29 14 views
3

Je viens à C++ de l'objectif C et ont un problème ... Cela fonctionne: -C++ portée de la classe

function1(char *filePath) { 

    Box box(filePath); // construct/create a box using filePath 

    // can use box in this function and destructor is called when function exits 

} 

Cependant, je besoin de quelque chose comme ça, où function1 et fonction2 sont appelés de manière asynchrone.

Box *boxPool[25]; // a pool of 25 box pointers 

function1(int item, char *filePath) { 

    boxPool[item](filePath); // construct/create a box, store a pointer in boxPool that is retained on exit 

} 

function2(int item) { 

    // use the box from boxPool[item] and then destruct/release it on exit 

} 
+0

J'ai manqué les crochets de la deuxième fonction1. Boîte * boxPool [25]; // un pool de 25 pointeurs de boîte function1 (int item, char * filePath) { boxPool [élément]; // construit/crée une boîte, stocke un pointeur dans boxPool qui est conservé à la sortie } –

+0

Est-ce que function1 et function2 seront appelées à partir de différents threads? – mskfisher

+0

Je voudrais changer le titre de cette question. Ce n'est pas vraiment une question de portée de classe. Il s'agit plus de l'allocation dynamique d'objets en C++ et de l'opérateur new. – Dima

Répondre

7

Peut-être:

void function1(int item, char *filePath) { 

    boxPool[item] = new Box(filePath); 

} 

void function2(int item) { 

    //use boxPool[item] 

    delete boxPool[item]; 
    boxPool[item] = NULL; 
} 
+1

court, concis et précis. Mieux que ce que j'allais poster! :) – AndyG

0
Box *boxPool[25]; 

boxPool est un tableau de 25 pointeurs vers des objets Box.

Box boxPool[25]; 

Est un tableau de 25 objets Box.

+0

Box * boxPool est un tableau de 25 pointeurs Box, pas d'objets, n'est-ce pas? – AndyG