6 votes

Comment passer des paramètres dans un objet de type tableau ? en c++.

class A
{
 int id;
public:
 A (int i) { id = i; }
 void show() { cout << id << endl; }
};
int main()
{
 A a[2];
 a[0].show();
 a[1].show();
 return 0;
} 

J'obtiens une erreur parce qu'il n'y a pas de constructeur par défaut, mais ce n'est pas ma question.

A a[2];

0voto

Eminem Points 113

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;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X