I’m getting errors for my class called Point3D and I really don’t understand why.
Here is my header:
#ifndef POINT3D_H
#define POINT3D_H
using namespace std;
class Point3D {
public:
Point3D(float x, float y, float z);
float operator[] (const int i);
private:
float xyz[3];
};
#endif
And here is the cpp file:
#include "point3d.h"
Point3D::Point3D(float x, float y, float z){
xyz[0] = x;
xyz[1] = y;
xyz[2] = z;
}
float Point3D::operator[](int i )
{
if(i == 0){
return xyz[0];
}
else if(i == 1){
return xyz[1];
}
else if(i == 2){
return xyz[2];
}
return -1;
}
There are the complier errors:
/tmp/ccyDEfcW.o: In function `Point3D::Point3D(float, float, float)':
vector3d.cc:(.text+0x0): multiple definition of `Point3D::Point3D(float, float, float)'
/tmp/ccqDasr3.o:point3d.cc:(.text+0x0): first defined here
/tmp/ccyDEfcW.o: In function `Point3D::Point3D(float, float, float)':
vector3d.cc:(.text+0x10): multiple definition of `Point3D::Point3D(float, float, float)'
/tmp/ccqDasr3.o:point3d.cc:(.text+0x10): first defined here
/tmp/ccyDEfcW.o: In function `Point3D::operator[](int)':
vector3d.cc:(.text+0x20): multiple definition of `Point3D::operator[](int)'
/tmp/ccqDasr3.o:point3d.cc:(.text+0x20): first defined here
collect2: ld returned 1 exit status
1) You have different declaration in the header:
and definition in .cpp:
Make both of them with the same parameter
2) Look at vector3d.cc (and please share it here),
You probably have defined Point3D code twice.