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 :

Attributs de classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16
    Par défaut Attributs de classe
    Bonsoir à toutes et à tous,

    Dans le cadre de mes études, j'apprends à programmer en C++ et je rencontre quelques difficultés lors de la mise en pratique.

    Je dois réaliser une classe Vecteur ayant comme attribut une taille et un pointeur sur un tableau contenant les valeurs. Je rencontre un soucis dès le début lors du constructeur par défaut.

    Vecteur.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Vecteur
    {
    	private:
    		int taille; // Dimension du vecteur
    		float *tab[]; // Données du vecteur
     
    	public:
    		Vecteur(); // Constructeur par défaut
    };
    Vecteur.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Vecteur::Vecteur():taille(0)
    {
    	tab = NULL;
    }
    D'après mon cours, je dois utiliser cette technique pour déclarer la variable tab à NULL. Or, lorsque je compile, j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vecteur.cc:15:11: erreur: incompatible types in assignment of ‘long int’ to ‘float* [0]
    Pour que cela marche je dois remplacer :

    Par :

    Cependant, je rencontre des soucis dans la suite dans mon code lorsque je souhaite récupérer les valeurs comprises dans ce tableau comme par exemple via la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    float& vecteur::operator[](const int i)
    {
    	return tab[i];
    }
    Merci d'avance

    Cordialement.

  2. #2
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    il me semble que par float *tab[]; tu crées un pointeur de pointeur.

    Normalement un float *tab; devrait suffire.

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Il me semble aussi que ce sujet, ou un sujet très similaire (sur les matrices ?), soulevant des questions très apparentées, a été traité il y a maximum deux ou trois semaines

    As-tu vu que le forum proposait une fonction de recherche ?
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Schnapse Voir le message
    D'après mon cours, je dois utiliser cette technique pour déclarer la variable tab à NULL. Or, lorsque je compile, j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vecteur.cc:15:11: erreur: incompatible types in assignment of ‘long int’ to ‘float* [0]
    Ce n'est pas normal, ça veut dire que quelque chose a (re)déclaré NULL comme étant de type long int. Normalement, NULL en C++ est la constante zéro à l'état brut, justement pour ne pas avoir de problèmes de type...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    es-tu sûr d'avoir besoin d'un float* tab[] ? Et non d'un simple float* ?
    [] signifie tableau, et * pour pointeur, tu définies un pointeur sur tableau.
    C'est pas forcément incohérent (quoi qu'il me semble que tu ne pourras pas le déclarer autre part qu'à sa propre initialisation), mais es-tu certain de ce que tu fais et que c'est ce dont tu as besoin ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Bousk Voir le message
    es-tu sûr d'avoir besoin d'un float* tab[] ? Et non d'un simple float* ?
    [] signifie tableau, et * pour pointeur, tu définies un pointeur sur tableau.
    Un tableau de pointeur plutôt (le pointeur sur tableau serait iirc float (*tab)[])

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/08/2006, 17h48
  2. assignation PHP4 attribut de class
    Par XtofRoland dans le forum Langage
    Réponses: 3
    Dernier message: 08/02/2006, 15h16
  3. Réponses: 3
    Dernier message: 08/12/2005, 14h41
  4. [css]problème d'attribution de classe dans deux listes
    Par Mitaka dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/11/2005, 18h05
  5. Réponses: 9
    Dernier message: 02/09/2005, 15h44

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