Pointer un charactère dans un tableau

Fermé
Programath Messages postés 5 Date d'inscription jeudi 9 décembre 2021 Statut Membre Dernière intervention 17 décembre 2021 - 10 déc. 2021 à 15:52
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 10 déc. 2021 à 20:45
Bonjour,

J'essai de créer un tableau où lors de mon premier choix je veux remplir la première case de ce tableau avec la lettre A. Pourquoi ici ça ne fonctionne pas ? Merci d'avance

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstdlib>
#include "Voyage.h"

using namespace std;

int main()
{
    vector<string> Nom_villes={"A","B","C","D"};
    int T[8];

     T[0] = *Nom_villes(0);
      cout <<  *T[0] << endl;
//ect...


Configuration: Windows / Chrome 96.0.4664.93

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
10 déc. 2021 à 20:45
Salut,

Tu veux pointer. Les objets qui peuvent pointer s'appellent des pointeurs, et il n'y en a aucun dans ton code.

Ta ligne
T[0] = *Nom_villes(0);
est une accumulation de non sens. Tu utilises un objet comme si c'était une fonction, tu déréférences le résultat comme si c'était un pointeur et tu veux le stocker dans un entier alors il y a surtout des strings!
Tu sembles vouloir que T soit un tableau de pointeur sur des strings, déclare le comme tel, ça marchera mieux.
    std::vector<std::string>  Nom_villes{"A","B","C","D"};
    std::string*  T[8]; // T est un tableau de 8 pointeurs sur des strings

     T[0] = &Nom_villes[0];  // T[0] prend l'adresse de la première ville.
     std::cout <<  *T[0] << std::endl;
Maintenant pourquoi vouloir pointer ? En C++ on doit éviter les pointeurs, et en plus il y a un gros risque à vouloir pointer des données qui sont dans un
std::vector<>
(un
std::vector<>
ça passe son temps à réorganiser ses éléments.)
0