Programación General > C/C++

 Suma de elementos de vector con plantillas

(1/1)

antlcn:
hola, tengo un problema con un ejemplo de programa en C++ que suma los elementos de un vector utilizando una clase plantilla, me da un error en la linea 21 de el archivo suma.h, a continuación pongo el código:

main.cpp:

--- Código: C++ ---#include<iostream>#include<suma.h>#include<stdlib.h>using namespace std;using namespace values; intmain(void){    Suma<int> S;    int *V, nElementos;    cout<<"Introduce el numero de elementos del vector: "<<endl;    cin>>nElementos;    V=(int *)malloc(nElementos*sizeof(int));    S.sumar(V, nElementos);    cout<<S.getResult()<<endl;    free(V);    return 0;} 


suma.h:

--- Código: C++ ---#ifndef _SUMA_H_#define _SUMA_H_ namespace values{    /** Brief esta clase realiza la suma de un vector    */    template<class Type>    class Suma    {        public:            /** Suma los elementos de un vector             */            void sumar(Type *p, int nElementos);            Type getResult() { return _res; }        private:            Type _res;    };} template<class Type> void Suma<Type>::sumar(Type *p, int nElementos) {     int i;     for(i=0;i<nElementos;i++){         _res=res+*(p+i);     } }    #endif 

gracias de antemano.

m0skit0:
¿Qué error te da exactamente?

antlcn:

--- Cita de: "m0skit0" ---¿Qué error te da exactamente?
--- Fin de la cita ---


me da un error que dice "expected initilizer before "<" token

ProfesorX:
Tienes la Clase Sumar dentro de un namespace, pero mas adelante la definicion del metodo


--- Código: C++ --- template<class Type>void Suma<Type>::sumar(Type *p, int nElementos)  esta fuera del namespace, simplemente coloca el metodo dentro del namespace, ademas


--- Código: C++ ---_res=res+*(p+i); 
esta equivocada la variable res, deberia ser:


--- Código: C++ ---_res=_res+*(p+i); 
claramente olvidaste un _

Saludos :)

Amilius:
Además te falta declarar un constructor que pueda inicializar "_res", de lo contrario no está garantizado que el resultado sea el esperado.


--- Código: C++ ---              Suma () : _res(0)             {};  

Navegación

[0] Índice de Mensajes

Ir a la versión completa