riemann_01
20-11-2006, 17:56
Ciao a tutti!
Ho scritto una classe generica che definisce, in modo piuttosto semplice, un vettore.
Nel processo di compilazione ricevo il seguente errore:
$ g++ -o vector vector.cpp
vector.h:58: error: expected constructor, destructor, or type conversion before ‘vector’
vector.h:64: error: expected constructor, destructor, or type conversion before ‘vector’
Per quale motivo? Non riesco a venire a capo. :doh:
Ecco il codice:
// file: vector.h
#include <iostream>
template <class T>
class vector {
public:
explicit vector(int);
vector(const T[],int);
vector(const vector<T>&);
~vector();
typedef T* iterator;
iterator begin() const;
iterator end() const;
T& operator[](int);
vector<T>& operator=(const vector<T>&);
private:
int size;
T* s;
};
template <class T>
vector<T>::vector(int dim = 10) : size(dim)
{
assert(dim > 0);
s = new T[size];
assert(s != 0);
}
template <class T>
vector<T>::vector(const T a[], int dim)
{
assert(dim > 0);
size = dim;
s = new T[size];
assert(s != 0);
for (int i = 0; i < size; ++i)
s[i] = a[i];
}
template <class T>
vector<T>::vector(const vector<T>& v)
{
size = v.size;
s = new T[size];
assert(s != 0);
for (int i = 0; i < size; ++i)
s[i] = v.s[i];
}
template <class T>
vector<T>::~vector()
{
delete []s;
}
template <class T>
iterator vector<T>::begin() const
{
return s;
}
template <class T>
iterator vector<T>::end() const
{
return (s + size);
}
template <class T>
T& vector<T>::operator[](int i)
{
assert(i > 0 && i < size);
return s[i];
}
template <class T>
vector<T>& vector<T>::operator=(const vector<T>& v)
{
assert(size == v.size);
for (int i = 0; i < size; ++i)
s[i] = v.s[i];
return *this;
}
// file: vector.cpp
#include "vector.h"
int main()
{
vector<int> v1;
vector<double> v2;
}
Ringrazio in anticipo chiunque possa darmi indicazioni utili a riguardo!
Ho scritto una classe generica che definisce, in modo piuttosto semplice, un vettore.
Nel processo di compilazione ricevo il seguente errore:
$ g++ -o vector vector.cpp
vector.h:58: error: expected constructor, destructor, or type conversion before ‘vector’
vector.h:64: error: expected constructor, destructor, or type conversion before ‘vector’
Per quale motivo? Non riesco a venire a capo. :doh:
Ecco il codice:
// file: vector.h
#include <iostream>
template <class T>
class vector {
public:
explicit vector(int);
vector(const T[],int);
vector(const vector<T>&);
~vector();
typedef T* iterator;
iterator begin() const;
iterator end() const;
T& operator[](int);
vector<T>& operator=(const vector<T>&);
private:
int size;
T* s;
};
template <class T>
vector<T>::vector(int dim = 10) : size(dim)
{
assert(dim > 0);
s = new T[size];
assert(s != 0);
}
template <class T>
vector<T>::vector(const T a[], int dim)
{
assert(dim > 0);
size = dim;
s = new T[size];
assert(s != 0);
for (int i = 0; i < size; ++i)
s[i] = a[i];
}
template <class T>
vector<T>::vector(const vector<T>& v)
{
size = v.size;
s = new T[size];
assert(s != 0);
for (int i = 0; i < size; ++i)
s[i] = v.s[i];
}
template <class T>
vector<T>::~vector()
{
delete []s;
}
template <class T>
iterator vector<T>::begin() const
{
return s;
}
template <class T>
iterator vector<T>::end() const
{
return (s + size);
}
template <class T>
T& vector<T>::operator[](int i)
{
assert(i > 0 && i < size);
return s[i];
}
template <class T>
vector<T>& vector<T>::operator=(const vector<T>& v)
{
assert(size == v.size);
for (int i = 0; i < size; ++i)
s[i] = v.s[i];
return *this;
}
// file: vector.cpp
#include "vector.h"
int main()
{
vector<int> v1;
vector<double> v2;
}
Ringrazio in anticipo chiunque possa darmi indicazioni utili a riguardo!