I have a physics Vector class which requires a constructor and to string function. When I compile the class I get the following error:
I invoke the compiler like so: g++ main.cpp -o main
Undefined symbols for architecture x86_64:
"Vector::toString()", referenced from:
_main in main-3acaf8.o
"Vector::Vector()", referenced from:
_main in main-3acaf8.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Which implies I have not defined the constructor and toString function. Here is my code, how do I resolve this?
Header file:
#include <iostream>
#include <cmath>
class Vector {
const static int d = 3, xPos = 0, yPos = 1, zPos = 2;
double components[d];
public:
Vector();
Vector(double x, double y, double z);
Vector(const Vector &v1);
void setVector(double x, double y, double z);
double getX();
double getY();
double getZ();
double magnitude();
Vector getUnitVector();
double dot(Vector v1, Vector v2);
void scale(double c);
Vector add(Vector v1, Vector v2);
Vector subtract(Vector v1, Vector v2);
Vector crossProduct(Vector v1, Vector v2);
void toString();
};
cpp file:
#include "vector.hpp"
Vector::Vector(){
for(int i = 0; i < d; i++)
components[i] = 0;
... // all other functions
void Vector::toString(){
printf("x: %lf, y: %lf, z: %lf\n",
components[0], components[1], components[2]);
}
Thank you.