2009-04-22 7 views
3

Est-il possible en C++ où un objet a l'argument ajouté sur elle, avec un tableau tel que:objets avec des arguments et tableau

int x = 1; 
int y = 2; 

Object myObject(x, y)[5]; // does not work 

J'espérais que je pourrais mettre des arguments dans l'objet, tout en créant un tableau de 5 de ces objets, quelqu'un sait-il comment? et y a-t-il une meilleure façon?

+1

- 1: Aucune langue spécifiée. Peut-être Java. Pas clair, cependant. –

+0

Ré-marqué pour correspondre à éditer – GManNickG

Répondre

6

Lors de la construction d'un tableau d'objets en C++, seul le constructeur par défaut peut être utilisé sauf si vous utilisez la syntaxe explicite d'initialisation Array:

Object myObject[5] = { Object(x, y), 
         Object(x, y), 
         Object(x, y), 
         Object(x, y), 
         Object(x, y) } 

Voici quelques bonnes informations du C++ FAQ à ce sujet:

http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5

+0

en supposant que c'est C++ :-) – lothar

0

vous ne l'avez pas mentionné quelle langue encore, mais en C# 3.0, vous pouvez approcher avec la collection initializers:

var myObject = new List<Object>() { 
    new Object(x,y), 
    new Object(x,y), 
    new Object(x,y), 
    new Object(x,y), 
    new Object(x,y) 
}; 
+0

Vous auriez dû mentionner que vous l'avez soumis avant qu'une langue ait été spécifiée. –

+0

Il n'est pas trop tard - regardez à nouveau;) –

0

Ou quelque chose comme ceci:

int x = 1; 
int y = 2; 
int numObjects = 5; 

Object myObjectArray[numObjects]; 

for (int i=0, i<numObjects, i++) { 
    myObjectArray[i] = new myObject(x,y); 
} 

Peut-être est une fonction avec x, y et numObjects comme params?

1

Si vous ne me dérange pas en utilisant un vecteur au lieu d'un tableau:

std::vector<Object> obj_vec(5, Object(x, y)); 

Ou si vous voulez vraiment un tableau et ne me dérange pas d'initialisation en 2 étapes:

Object obj_array[5]; 
std::fill_n(obj_array, 5, Object(x, y)); 
+0

Je ne comprends pas cette partie. Vous devez avoir un constructeur par défaut sans arguments pour que la première ligne soit vraie. Ensuite, vous remplissez cet emplacement de mémoire avec des objets créés dynamiquement. Alors pourquoi n'utilisons-nous pas les pointeurs à la place des objets réels. Ils sont fondamentalement inutiles ici. –

+0

@Halil Kaskavalci: ' –

+0

@Halil Kaskavalci: Je ne comprends pas votre commentaire. Reportez-vous à la suggestion d'utiliser le vecteur ctor ou à celui qui utilise le remplissage? –