Salut,

Débutant total en C++, j'aimerais savoir si cette façon de faire un tableau de strucures est correcte. Si oui, j'aurais cru que la méthode at() retournerait une copie de la structure, or elle semble travailler par pointeurs puisque si l'on modifie "le truc" retourné par la méthode at(), on modifie bien l'instance. C'est correct ou pas?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
 
typedef struct
{
    size_t id;
    char* label;
}DUMMY;
 
int main()
{
    std::vector<DUMMY> items;
    items.push_back((DUMMY){7, "item1"});
    items.push_back((DUMMY){5, "item2"});
    items.push_back((DUMMY){12345, "item3"});
    items.at(2).id = 54321; // modif de l'instance ou de la copie
    for(size_t index = 0; index < items.size(); index++)
    {
        std::cout << "id:" << items.at(index).id << " label:\"" << items.at(index).label << "\"\n";
    }
    return 0;
}

Encore une question, y a t-il moyen de supprimer le cast (DUMMY) des 3 lignes similaires?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
items.push_back((DUMMY){7, "item1"});
A+

Pfeuh