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 :

Erreur: Impossible d'instancier une classe abstraite


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    Janvier 2012
    Messages
    68
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 68
    Par d�faut Erreur: Impossible d'instancier une classe abstraite
    Bonsoir,

    J'ai un petit soucis dans mon programme C++...

    J'ai cr�er une classe abstraite, et une autre classe qui a h�rit� de la premi�re.
    J'ai bien red�fini les m�thodes qui �taient virtuelle pur de la classe maitre, dans les classes filles.
    Mais quand j'essaye d'utiliser cette classe, Visual me dit ceci:
    'InputSignal_Step'*: impossible d'instancier une classe abstraite


    J'ai essayer de bien relire mon cours, certain bouquin, mais je ne comprend d'ou vient l'erreur...

    Classe maitresse (Header):
    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
    #ifndef INPUTSIGNAL_H
    #define INPUTSIGNAL_H
     
    #include "stdafx.h"
    #include <iostream>
     
    class InputSignal
    {
    public: //________________________________________________________
     
    	// CONSTRUCTOR
    	InputSignal();
    	InputSignal(unsigned int, unsigned int);
    	InputSignal(const InputSignal&);
    	virtual ~InputSignal();
     
    	// OPERATOR
    	virtual float& operator [] (unsigned int);
     
    	// GET/SET
    	virtual unsigned int get_lenght() const;
    	virtual void set_lenght(unsigned int) =0;
    	virtual int get_tech() const;
    	virtual void set_tech(int) =0;
     
    	virtual float get_insignal_value(unsigned int) const;
    	virtual void set_insignal_value(unsigned int, float);
    	virtual float* get_insignal() const;
    	//virtual void set_insignal(const InputSignal&);
     
    	// METHOD
    	virtual void build_insignal() =0;
     
    protected: //_____________________________________________________
     
    	unsigned int lenght; //en nombre d'échantillon
    	unsigned int tech; //en ms
     
    	float* insignal; //tableau qui contient le signal d'entrée
     
    private: //_______________________________________________________
     
    };
    #endif
    Classe maitresse (CPP):
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #include "stdafx.h"
    #include "InputSignal.h"
     
    //### PUBLIC ####################################################################
    //###############################################################################
     
    //_______________________________________________________________________________
    // CONSTRUCTOR
     
    InputSignal::InputSignal():
    	lenght(1), tech(1)
    {
    	float* buffer = new float[lenght];
    	for(unsigned int i=0; i<lenght;i++)
    	{
    		buffer[i] = 0;
    	}
    	insignal = buffer;
    }
     
    InputSignal::InputSignal(unsigned int new_lenght,unsigned int new_tech):
    	lenght(new_lenght), tech(new_tech)
    {
    	float* buffer = new float[lenght];
    	for(unsigned int i=0; i<lenght;i++)
    	{
    		buffer[i] = 0;
    	}
    	insignal = buffer;
    }
     
    InputSignal::InputSignal(const InputSignal& InputCopy):
    lenght(InputCopy.get_lenght()), tech(InputCopy.get_tech())
    {
    	float* buffer = new float[lenght];
    	for(unsigned int i=0; i<lenght;i++)
    	{
    		try
    		{
    			buffer[i] = InputCopy.get_insignal_value(i);
    		}
    		catch(const std::out_of_range& e)
    		{
    			std::cout << std::endl << "e";
    		}
    	}
    	insignal = buffer;
    }
     
    InputSignal::~InputSignal()
    {
    	if (insignal != NULL)
    		delete [] insignal;
    }
     
    //_______________________________________________________________________________
    // OPERATOR
     
    float& InputSignal::operator[] (unsigned int index)
    {
    	return insignal[index];
    }
     
    //_______________________________________________________________________________
    // GET/SET
     
    unsigned int InputSignal::get_lenght() const
    {
    	return lenght;
    }
     
    int InputSignal::get_tech() const
    {
    	return tech;
    }
     
    float InputSignal::get_insignal_value(unsigned int index) const
    {
    	if(index < lenght){
    		return insignal[index];
    	} else {
    		throw std::out_of_range("Out of range for InputSignal table");
    	}
    }
     
    void InputSignal::set_insignal_value(unsigned int index, float new_value)
    {
    	if(index < lenght){
    		insignal[index] = new_value;
    	} else {
    		throw std::out_of_range("Out of range for InputSignal table");
    	}
    }
     
    float* InputSignal::get_insignal() const
    {
    	return insignal;
    }
     
    //### PROTECTED #################################################################
    //###############################################################################
     
    //### PRIVATE ###################################################################
    //###############################################################################
    Classe fille (Header):
    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
    #ifndef INPUTSIGNALSTEP_H
    #define INPUTSIGNALSTEP_H
     
    #include "stdafx.h"
    #include "InputSignal.h"
    #include <iostream>
     
    class InputSignal_Step: public InputSignal
    {
    public: //________________________________________________________
     
    	// CONSTRUCTOR
    	InputSignal_Step();
    	InputSignal_Step(float);
    	InputSignal_Step(const InputSignal_Step&);
    	virtual ~InputSignal_Step();
     
    	// GET/SET
    	virtual void set_lenght(unsigned int); //Fonction virtuelle
    	virtual void set_tech(unsigned int); //Fonction virtuelle
    	virtual float get_amp() const;
    	virtual void set_amp(float);
     
    	// METHOD
    	virtual void build_insignal(); //Fonction virtuelle
     
    protected: //_____________________________________________________
    private: //_______________________________________________________
     
    	float amp;
     
    };
    #endif INPUTSIGNALSTEP_H
    Classe fille (CPP):
    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
    #include "stdafx.h"
    #include "InputSignal_Step.h"
     
    //### PUBLIC ####################################################################
    //###############################################################################
     
    //_______________________________________________________________________________
    // CONSTRUCTOR
     
    InputSignal_Step::InputSignal_Step()
    {
    	build_insignal();
    }
     
    InputSignal_Step::InputSignal_Step(float new_amp):
    	amp(new_amp)
    {
    	build_insignal();
    }
     
    InputSignal_Step::InputSignal_Step(const InputSignal_Step& InputCopy):
    	amp(InputCopy.get_amp())
    {
    	build_insignal();
    }
     
    InputSignal_Step::~InputSignal_Step()
    {}
     
    //_______________________________________________________________________________
    // GET/SET
     
    void InputSignal_Step::set_lenght(unsigned int new_lenght)
    {
    	lenght = new_lenght;
    	build_insignal();
    }
     
    void InputSignal_Step::set_tech(unsigned int new_tech)
    {
    	tech = new_tech;
    	build_insignal();
    }
     
    float InputSignal_Step::get_amp() const
    {
    	return amp;
    }
     
    void InputSignal_Step::set_amp(float new_amp)
    {
    	amp = new_amp;
    	build_insignal();
    }
     
    //_______________________________________________________________________________
    // METHOD
     
    void InputSignal_Step::build_insignal()
    {
    	for(unsigned int i=0; i<lenght;i++)
    	{
    		try {
    			set_insignal_value(i,amp);
    		} catch(const std::out_of_range& e) {
    			std::cout << std::endl << "e";
    		}
    	}
    }
     
    //### PROTECTED #################################################################
    //###############################################################################
     
    //### PRIVATE ###################################################################
    //###############################################################################

  2. #2
    Membre �m�rite
    Homme Profil pro
    R&D imagerie 3D / prog embarqu�e
    Inscrit en
    Mars 2007
    Messages
    419
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : R&D imagerie 3D / prog embarqu�e
    Secteur : Sant�

    Informations forums :
    Inscription : Mars 2007
    Messages : 419
    Par d�faut
    Salut,

    set_tech n'est pas d�fini de la m�me fa�on dans les 2 classes.

    M�re :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    virtual void set_tech(int) =0;
    Fille:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    virtual void set_tech(unsigned int);
    En passant, si personne n'h�rite de "Fille", pas besoin de d�clarer tes fonctions virtuelles. C'est m�me recommand� de ne pas le faire, puisque �a �vite de r�soudre la port�e des fonctions dans la table des fonctions virtuelles.

  3. #3
    Membre confirm�
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    Janvier 2012
    Messages
    68
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 68
    Par d�faut
    Ooooooh !
    J'ai relu plusieurs fois mes trucs, mais je suis pass� � cot� d'une erreur aussi futile et je me suis pris la t�te sur le reste =)

    Bien le merci !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Instancier une classe abstraite
    Par kewti dans le forum D�buter avec Java
    R�ponses: 4
    Dernier message: 02/07/2014, 14h20
  2. [D�butant] Impossible d'instancier une classe depuis .aspx.vb
    Par Jah73 dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 08/01/2014, 09h22
  3. Erreur impossible d'instancier la classe en JSF
    Par aishaDev dans le forum JSF
    R�ponses: 7
    Dernier message: 19/05/2012, 12h52
  4. R�ponses: 5
    Dernier message: 29/12/2010, 15h13
  5. "Instancier" une classe abstraite
    Par alex6891 dans le forum Langage
    R�ponses: 5
    Dernier message: 03/05/2006, 10h56

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