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):
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 #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 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
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 (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 #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
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 ################################################################### //###############################################################################
Partager