Une bonne pratique consiste à déclarer votre constructeur de manière explicite (sauf s'il définit une conversion), surtout si vous n'avez qu'un seul paramètre. Ensuite, vous pouvez créer de nouveaux objets et les ajouter à votre tableau, comme ceci :
#include <iostream>
#include <string>
class A {
int id;
public:
explicit A (int i) { id = i; }
void show() { std::cout << id << std::endl; }
};
int main() {
A first(3);
A second(4);
A a[2] = {first, second};
a[0].show();
a[1].show();
return 0;
}
Cependant, une meilleure façon de procéder est d'utiliser des vecteurs (disons qu'en une semaine, vous voulez 4 objets dans votre tableau, ou n objets en fonction d'une entrée). Vous pouvez le faire comme ceci :
#include <iostream>
#include <string>
#include <vector>
class A {
int id;
public:
explicit A (int i) { id = i; }
void show() { std::cout << id << std::endl; }
};
int main() {
std::vector<A> a;
int n = 0;
std::cin >> n;
for (int i = 0; i < n; i++) {
A temp(i); // or any other number you want your objects to initiate them.
a.push_back(temp);
a[i].show();
}
return 0;
}