Bon, j'ai réecris mon programme
fichier.h
fichier.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
105
106
107
108
109
110
111
112
113
114
115 #include<iostream> //template<typename Real, int dim> class Vector; //template<typename Real, int dim> //std::ostream& operator<<(std::ostream&, Vector<Real,int> const&); template <typename Real> class vector { private: int dim;//taille Real *v;//pointer les composantes public: vector(int nb=0, Real val=0);//déclaration d'un constructeur avec argument vector(vecteur const& v);//déclaration d'un constructeur de copie ~vector();//déstructeur Real& operator [] (int rang);//Déclaration de l'opérateur[] vector& operator = (const vector&);//Déclaration de l'opérateur = vector operator * (Real scalar); //Déclaration de l'opérateur * vector operator + (const vector&);//Déclaration de l'opérateur + vector operator - (const vector&);//Déclaration de l'opérateur - Real vector:: norme (const vector&, int dim) const; void affiche(); }; //Définition du constructeur de copie vector::vector(const vecteur& ref): n(ref.dim) { v = new Real[dim]; for(int i=0; i<dim;i++) v[i]=ref.v[i]; } //Définition du constructeur avec argument vector::vector(int nb, Real val) { dim = nb; if (nb == 0) v = NULL; else { v = new Real[dim]; for (int i=0; i<dim; i++) v[i] = val; } } //Définition du destructeur vector::~vector() {} //Définition de [] Real& vector::operator[](int rang) { return v[rang]; } //Définition de = vector &vector::operator=(const vecteur &a) { for(int i=0;i<dim;i++) { v[i]=a.v[i]; } return *this; } //Définition de + vector vector:: operator + (const vecteur &a) { vecteur d(dim); for (int i=0;i<n;i++) d.v[i]=v[i]+a.v[i]; return d; } //Définition de * vector vector:: operator*(Real d) { for(int i=0;i<dim;i++) v[i]=d*v[i]; return *this; } //Définition de la fonction norme Real vector:: norme (const vecteur&, int dim) const { Real p=; for (int i=0; i<dim; i++) { p=v[i] * v[i] + p; } return sqrt(p); } //Déclaration de la fonction affiche void vector::affiche() { //cout<<"les coordonnées du vecteurs v sont"<<endl; for(int i=0;i<dim;i++) { std::cout<<v[i]<<std::endl; } std::cout<< "---fin---"<<std::endl; }
Et il me renvoie les erreurs suvantes:
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 #include <iostream> #include "Vector.h" #include <cmath> #include <fstream> using namespace std; int main() { return 0 ; }
error: expected ‘)’ before ‘const’
vector(vecteur const& v);//déclaration d'un constructeur de copie
^
Vector.h:23:8: error: extra qualification ‘vector<Real>::’ on member ‘norme’ [-fpermissive]
Real vector:: norme (const vector&, int dim) const;
^
Vector.h:23:48: error: explicit specialization of ‘Real vector<Real>::norme(const vector<Real>&, int) const’ must be introduced by ‘template <>’
Real vector:: norme (const vector&, int dim) const;
^
Vector.h:30:1: error: invalid use of template-name ‘vector’ without an argument list
vector::vector(const vecteur& ref): n(ref.dim)
^
Vector.h:38:1: error: invalid use of template-name ‘vector’ without an argument list
vector::vector(int nb, Real val)
^
Vector.h:52:1: error: invalid use of template-name ‘vector’ without an argument list
vector::~vector()
^
Vector.h:56:1: error: ‘Real’ does not name a type
Real& vector::operator[](int rang)
^
Vector.h:63:1: error: invalid use of template-name ‘vector’ without an argument list
vector &vector::operator=(const vecteur &a)
^
Vector.h:74:1: error: invalid use of template-name ‘vector’ without an argument list
vector vector:: operator + (const vecteur &a)
^
Vector.h:83:1: error: invalid use of template-name ‘vector’ without an argument list
vector vector:: operator*(Real d)
^
Vector.h:92:1: error: ‘Real’ does not name a type
Real vector:: norme (const vecteur&, int dim) const
^
Vector.h:106:6: error: ‘template<class Real> class vector’ used without template parameters
void vector::affiche()
^
Vector.h: In function ‘void affiche()’:
Vector.h:109:15: error: ‘dim’ was not declared in this scope
for(int i=0;i<dim;i++)
^
Vector.h:111:12: error: ‘v’ was not declared in this scope
std::cout<<v[i]<<std::endl;
Indiquez moi comment le corriger s'il vous plaît pour que je comprenne une bonne fois pour toute. Je vous remercie par avance.
Partager