0

Me sale el error

undefined reference to `Vector::Vector(int)'

Es un proyecto en el tengo que programar una clase vector para abstraer un vector de Rⁿ que realize ciertas operaciones y que funcionen los métodos desde el main, aún no programo todas las funciones, pero al menos al tratar de inicializar el objeto Vector no me deja por el error ya antes mencionado. Tengo 3 archivos en el proyecto. "claseVector.h", "claseVec.cpp y "main.cpp" en seguida los anexo.

'claseVector.h'

#ifndef CLASEVECTOR_H_INCLUDED
#define CLASEVECTOR_H_INCLUDED
#include<iostream>
#include<cstdlib>
class Vector{
private:
    double *data;
    int size;
public:
    Vector(int size);
    ~Vector();
    Vector suma(Vector V);
    Vector multi(double a);
    double dot(Vector V);
    double get(int i);
    void set(int i, double val);
};

#endif // CLASEVECTOR_H_INCLUDED

'main.cpp'

#include <iostream>
#include<cstdlib>
#include"claseVector.h"
#define DIM 10
using namespace std;

int main(){
    Vector *V1=new Vector(DIM);
    Vector *V2=new Vector(DIM);

    return 0;
}

'claseVec.cpp'

#include"claseVector.h"
#include<iostream>
#include<cstdlib>

using namespace std;

Vector::Vector(int size){
    this->data=new double[size];
    for(int i=0;i<V1->size;i++){
       this->data[i]=1.0*rand()/RAND_MAX;
    }
}

Vector Vector::suma(Vector V){
    int i;
    for(i=0;i<this->size;i++){
       this->data[i]=this->data[i]+V.data[i];
    }
    return this;
 }
Esteban Vera
  • 125
  • 2
  • 3
  • 12

1 Answers1

0

El erro es generado por el linker, porque no puede ver donde esta la definicion del constructor.

Si estas usando un IDE, deberias agregar ambos ficheros .cpp a el proyecto asi se compilaran juntos y la definicion sera encontrada por el linker.

Sino asumiendo que estas usando gcc:

g++ main.cpp claseVec.cpp

combinara el codigo en un ejecutable y ya no te dara ese error

Junior Usca
  • 620
  • 3
  • 14