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 :

error: variable 'Histogram histo' has initializer but incomplet


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut error: variable 'Histogram histo' has initializer but incomplet
    Bonsoir à tous,

    Je vous présente mon problème :

    J'ai ma classe Histogram :

    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
     
     
     typedef unsigned long int ulong;
        typedef unsigned short int ushort;
        typedef unsigned char ubyte;
        typedef unsigned int uint;
     
        #include "Image.h"
        #include <iostream>
     
     
        class Histogram
        {
            static const ushort NB_MAX = 256;
            uint histo[NB_MAX];
            uint grisMax;
     
        public:
     
            Histogram(const GrayImage &gi);
            GrayImage* draw() const;
        };
     
        const ushort Histogram::NB_MAX;
     
        /* END OF CLASS */

    Et ma classe Image :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
         #ifndef TP3_C___Image_h
        #define TP3_C___Image_h
     
     
        #include <iostream>
        #include <cstdlib>
        #include <sstream>
        #include <stdexcept>
        #include <vector>
        #include <stdio.h>
        #include <algorithm>
     
        extern "C" {
        #include <jpeglib.h> /* Ce sont des déclarations relatives à des fonctions C ! */
        }
     
        #include "Color.h"
     
        #include <cmath>
     
        typedef unsigned short int ushort;
        typedef unsigned long int ulong;
        typedef unsigned char ubyte;
        typedef unsigned int uint;
     
     
        template <typename T>
        class Image
        {
            friend class Histogram;
     
            /**
             * Longueur et largeur
             */
            ushort width, height;
     
            /**
             * Tableau d'images
             */
            T *array;
     
     
        public:
     
            /**
             * Constructeur de la classe
             */
            Image(const ushort &w,const ushort &h);
     
     
            /**
             * Constructeur de copie
             */
            Image(const Image<T> &img);
     
            /**
             * Destructeur
             */
            ~Image();
     
     
        /**
         * Méthode renvoyant une réference sur le pixel de
         * coordonnée x,y
         */
        T &pixel(ushort, ushort);
     
        /**
         * Méthode renvoyant le niveau de gris
         * correspondant au pixel de coordonée x,y
         */
        const T& pixel(ushort x, ushort y) const;
     
        /* ETC .. */
     
        Image<Color>* bilinearScale(ushort, ushort) const;
        Image<ubyte>* threshold(ubyte thresh= 128) const;
        Image<ubyte>* randomDither() const;
    };
     
         typedef Image<ubyte> GrayImage;
         typedef Image<Color> ColorImage;
    Ceci est un morceau du main :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
      #include <iostream>
             #include <iomanip>
        #include <fstream>
        #include <memory>
        #include <cmath>
        #include "Image.h"
        #include "Histogram.h"
     
        using namespace std;
     
        typedef Image<ubyte> GrayImage;
        typedef Image<Color> ColorImage;
     
     
        int main()
        {
            try
            {
                //========================================
                // Pour créer un rectangle vide et plein
                //========================================
     
                GrayImage gi(200,400); /* Une image en gris */
                ofstream os("rectangle.pgm", ios::binary);
                gi.clear(100);
                gi.fillRectangle(0, 0, 2,2, 244);
                gi.rectangle(0, 52, 50, 100, 244);
                gi.writePGM(os);
     
     
                //=========================================================
                // Pour lire une image, écrire par dessus et l'enregistrer
                //=========================================================
     
                ifstream ifsPgm("chat.pgm", ios::binary);
                auto_ptr<GrayImage> ptrGray(GrayImage::readPGM(ifsPgm)); /* Une image en gris */
                ptrGray->fillRectangle(0, 0, 50,100, 222);
                ptrGray->rectangle(70, 70, 50, 100, 244);
                ofstream chatOutPut("chatWrite.pgm", ios::binary);
                ptrGray->writePGM(chatOutPut);
     
     
                //=================================================
                // Pour lire une image et déssiner son histogramme
                //=================================================
     
                ifstream ifsHisto("chat.pgm", ios::binary);
                ofstream histogramOutPut("histogram.pgm", ios::binary);
                ptrGray.reset(GrayImage::readPGM(ifsHisto)); 
                if(ptrGray.get()) {
                	Histogram histo(*ptrGray);
                	auto_ptr<GrayImage> myHisto(histo.draw());
                    myHisto->writePGM(histogramOutPut);
    }

    Donc voilà, en compilant, je me retrouve avec cette erreur :

    error: variable ‘Histogram histo’ has initializer but incomplete type
    J'ai fais énormément de recherches sur le net et aucune ne marche ..

    Quelqu'un saurait-il m'éclairer ?

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    normalement cette erreur indique que Histogram est un type connu, mais pas défini.
    Généralement, il sera "forward initializé" mais il faut l'include de la définition de la class complète pour l'utiliser.
    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.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le truc c'est que dans le main, j'inclus la classe histo ..

  4. #4
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Est-ce qu'il s'agit bel et bien de la première erreur survenue ?
    Sinon, il faut traiter les erreurs dans l'ordre.
    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.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Et oui.. c'est bien la première

    Je vais jamais m'en sortir avec ces foutu templates ma parole

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2011, 08h03
  2. has initializer but incomplete type
    Par laflak dans le forum C
    Réponses: 3
    Dernier message: 25/03/2008, 18h05
  3. Réponses: 3
    Dernier message: 23/01/2008, 16h04
  4. Error :document.Form.elements has no properties
    Par makohsarah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/07/2007, 16h11
  5. Réponses: 9
    Dernier message: 27/09/2006, 15h58

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