erreur avec un point virgule
Bonjour, après deux ans d'abandon du C++ (pour faire du C) je me remet au C++. J'avoue que j'ai dû oublié de nombreuses choses. Je m'entraine donc à refaire une classe Matrix templatée et c'est un peu plus dur que je ne le pensais. J'ai un pb de point virgule que je n'arrive pas à résoudre. Voici mon code :
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#include <iostream>
//#include "matrix.h"
using namespace std;
int main(void)
{
std::cout<<"Hello World"<<std::endl;
/*
Matrix<double> A;
Matrix<double> B(2,2,2);
//cout<<B<<endl;
Matrix<Matrix<double> > C(4,3,B);
//cout<<C<<endl;
*/
return 0;//EXIT_SUCCESS;
} |
matrix.cpp
Code:
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
|
#include<iostream>
#include "matrix.h"
/* default constructor */
template<typename T>
Matrix<T>::Matrix()
{
std::cout<<"appel du constructeur par default"<<std::endl;
}
//Matrix(const Matrix &); /* copy constructor */
template<typename T>
Matrix<T>::Matrix(unsigned row,unsigned col,const T & d)
{
std::cout<<"appel du constructeur"<<std::endl;
nr=row;
nc=col;
data=new T * [ nr ];
unsigned i,j;
for(i=0;i<nr;i++)
{
data[i]=new T [ nc ];
if(data[i]==NULL) std::cerr<<"Error"<<std::endl;
for(j=0;j<nc;++j) data[i][j]=d;
}
} |
matrix.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
#ifndef MATRIX_H_PLP_20070925
#define MATRIX_H_PLP_20070925
#include<iostream>
template<typename T> class Matrix
{
private:
unsigned nr; /* number of rows */
unsigned nc; /* number of columns */
T ** data;
public:
Matrix(); /* default constructors */
Matrix(unsigned,unsigned, const T &); /* constructor */
}
#endif |
et voici mon erreur :
Citation:
../Sources/matrix.cpp:5: error: semicolon missing after declaration of `
Matrix<T>'
../Sources/matrix.cpp:5: error: erreur de syntaxe before `template'
make: *** [../Sources/matrix.o] Erreur 1
je suis un peu séché.
Autre question : j'ai dans mon privaite : T ** data. Ne vaudrait-il pas mieux faire un
Code:
1 2
|
vector<vector<T> > data; |
ainsi, pour une augmentation ou diminution de ma matrice, cela sera plus facile non ?
Merci bcp