IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

tableau de structure à 2dim --> cannot convert 'tileset*' to 'tileset**' for argument '1'


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Par défaut tableau de structure à 2dim --> cannot convert 'tileset*' to 'tileset**' for argument '1'
    Bonjour à tous,
    j'essai de developper un jeu de plateforme mais j'ai une erreur à franchir d'abord. Je voudrais creer un tableau à 2 dimentions d'une structure concernant mes tiles. Mais malheuresement j'obtiens l'erreur suivante :
    cannot convert 'tileset*' to 'tileset**' for argument '1' to 'void test(tileset**)'.

    J'ai mit mon code pour bien visualiser le soucis.

    Est-ce qu'on peut m'aider svp?




    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
    23
    24
    25
    26
    27
    28
    #include <iostream>
    #include <iomanip>
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
     
    using namespace std;
     
    struct tileset {
     
        int type;
        int etat;
        int plan;
    };
     
    tileset tile[50];
     
    void test(tileset *tile[])
    {
        cout << tile[0]->type << "\n";
    }
     
    int main()
    {
        test(&tile);
     
        return 0;
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    tile et &tile sont la même chose (seul cas pour les tableaux), car un tableau est immédiatement transformé en pointeur.
    Ici il faut recevoir un pointeur (qui sera utilisable comme un tableau)
    par au choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void test(tileset tile[])
    {
    cout << tile[0]->type << "\n";
    }
    void test(tileset *tile)
    {
    cout << tile[0]->type << "\n";
    }
    Les deux fonctions sont en fait les mêmes (on ne peut pas passer en paramètre un tableau)

  3. #3
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Par défaut oui mais en fait c'est pour un tableau à 2 dimentions
    Merci dalfab,
    mais en fait je doit le faire pour un tableau à 2 dimentions. Si je rajoute [] au tile[] ca me ressort encore une erreur.

    J'espere que tu lira ce message.



    Citation Envoyé par dalfab Voir le message
    Bonjour,

    tile et &tile sont la même chose (seul cas pour les tableaux), car un tableau est immédiatement transformé en pointeur.
    Ici il faut recevoir un pointeur (qui sera utilisable comme un tableau)
    par au choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void test(tileset tile[])
    {
    cout << tile[0]->type << "\n";
    }
    void test(tileset *tile)
    {
    cout << tile[0]->type << "\n";
    }
    Les deux fonctions sont en fait les mêmes (on ne peut pas passer en paramètre un tableau)

  4. #4
    Membre éprouvé
    Homme Profil pro
    sans activité
    Inscrit en
    Janvier 2016
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans activité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 76
    Par défaut
    Bonjour solarquantum2,

    si je comprends bien tu cherches à avoir un tableau à 2 dimensions pour les coordonnées de tes tuiles.

    Il existe des astuces pour travailler avec un tableau 1d avec des coordonnées 2d
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #define TAILLE 50
     
    int x = 15
    int y = 2;
     
    Tileset tile[TAILLE * TAILLE];
     
    tile[x + y*TAILLE];
    Mais tu constatera vite que ce n'est pas ton seul problème, tes structures ne sont pas initialisées donc ton tableau est remplit de structures vides.


    P.S.: le #define doit être placé avant le main()

  5. #5
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Par défaut oui mais je veux passer ce tableau de structure tileset tile[50][50] à mes fonctions
    merci de ta reponse mais ce n'est pas encore ca.

    Moi j'ai deja le tableau de structure tileset tile[50][50] (qui marche) mais j'ai besoin de le faire passer en argument dans mes fonctions. Je ne veux pas de variable globals dans mon jeu...
    Dans le code suivant ca plante car il y a plus d'une dimention.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void test(tileset *tile)
    {
        cout << tile[0][0].type << "\n";
    }
    Ce dont j'ai besoin c'est de faire passé en argument ce tableau de structure.




    Citation Envoyé par rnr72 Voir le message
    Bonjour solarquantum2,

    si je comprends bien tu cherches à avoir un tableau à 2 dimensions pour les coordonnées de tes tuiles.

    Il existe des astuces pour travailler avec un tableau 1d avec des coordonnées 2d
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #define TAILLE 50
     
    const int tailleTableau = TAILLE * TAILLE;
     
    int x = 15
    int y = 2;
     
    Tileset tile[tailleTableau];
     
    tile[x + y*TAILLE];
    Mais tu constatera vite que ce n'est pas ton seul problème, tes structures ne sont pas initialisées donc ton tableau est remplit de structures vides.


    P.S.: le #define soit être placé avant le main()

  6. #6
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Par défaut
    Ce dont j'ai besoin c'est de faire passé en argument ce tableau de structure et de pouvoir le modifier depuis la fonction. Donc j'ai besoin d'un pointeur.
    Mais je n'y arrive pas quand y'a 2 dimentions. Avec une j'y arrive.

    Aidez moi svp.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/03/2013, 18h37
  2. Réponses: 2
    Dernier message: 31/01/2006, 14h31
  3. [error] cannot convert parmater
    Par shirya dans le forum C++
    Réponses: 3
    Dernier message: 16/12/2005, 19h45
  4. Trier un tableau de structures
    Par Yux dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 17h28
  5. cannot convert 'std::string' to 'System::String ^'
    Par broadhead dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo