Ayuda C++

Necesito una mano con una practica que estoy desarrollando. Soy novato y practicamente estoy copiandola pero me da errores. Ayuda por favor.

Vector.h

#ifndef _VECTOR_STATIC_H_
#define _VECTOR_STATIC_H_

#include <iostream>


template<class T, int sz> class Vector {
private:
T aVector [sz];
public:
Vector(void) {}
Vector(const T& val);
inline const int size(void) const {return sz;}
T& operator[] (int i) {return aVector[i];}
};

template<class T, int sz> Vector<T, sz>::Vector(const T& val) {
for(int i = 0; i < sz; i++)
aVector[i] = val;
}

template<class T, int sz> ostream& operator<<(ostream& sout, Vector<T, sz>& v) {
sout << "[ ";
for(int i = 0; i < sz; i++)
sout << v[i] << " ";
sout << "] " << endl;
return sout;
}

template<class T, int sz> istream& operator>>(istream& sin, Vector<T, sz>& v) {
for(int i = 0; i < sz; i++)
sin >> v[i];
return sin;
}

template<class T, int sz> void sort(Vector<T, sz>& v) {
for(int i = 0; i < sz -1; i++)
for(int j= i+1; j < sz; j++)
if (v[i] > v[j]) {
T tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}
}
#endif



Vector.C

#include <iostream>
#include "Vector.h"

using namespace std;

const int Size = 5;

int main (void) {
Vector<int, Size> a;

//Lectura
cout << "Introduce los " << a.size() << "elementos enteros: ";
cin >> a;

Vector<int, Size> b(a);
sort(b);

//Escritura
cout << "Original: " << a;
cout << "Ordenado: " << b;
cout << endl;

}




ERRORES: Salen miles. Esto es el principio
In file included from Vector.C:3:
Vector.h:22: error: expected constructor, destructor, or type conversion before ‘&’ token
Vector.h:30: error: expected constructor, destructor, or type conversion before ‘&’ token
Vector.C: In function ‘int main()’:
Vector.C:14: error: no match for ‘operator>>’ in ‘std::cin >> a’
/usr/include/c++/4.4/istream:119: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>& (*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
Lo siento no poderte ayudar mucho pero la variable "a" que tienes ahí no la veo declarada en ningún sitio. Lo demás no sé, hace un año que no me pongo con el C++.
Bufff, tienes un cacao ahí montado del copón. Supongo que estarás intentando hacer una clase simple, y un main que la utilice.

A ver si con estas pistas puedes aclarar un poco el lio:
- Borra lo de template, no creo que estés intentando hacer un template, si fuera así, se declararía todo en el h.
- Saca el main de la clase, haz un solo cpp con el main (busca algún ejemplo en google, son todos iguales), y luego un cpp+h para la clase vector.
- Declara clase y cabeceras en el .h, y define las funciones en el cpp (bajate y mira cualquier clase SIMPLE, la estructura es siempre igual)

Inténtalo de nuevo y cuando lo tengas si quieres postea de nuevo las dudas, pero es que es mas fácil ahora mismo empezar de cero que corregir lo que tienes, sorry.
erperdi escribió:Necesito una mano con una practica que estoy desarrollando. Soy novato y practicamente estoy copiandola pero me da errores. Ayuda por favor.


Perdona que sea tan "borde", pero copiando no se llega a ninguna parte. Si quieres saber lo que estás haciendo interpreta el código y así podrás encontrar el error...
Es una parte esencial de la programación, sobretodo cuando comienzas, así que te aconsejo que si realmente te interesa la materia pongas tus esfuerzos en pensar e interpretar y buscarte la vida en San Google. Si no te interesa no pierdas el tiempo con la materia y dedícate a estudiar otra cosa que más te guste.
3 respuestas