0

Point3D というクラスでエラーが発生しましたが、その理由がよくわかりません。

これが私のヘッダーです:

#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

cpp ファイルは次のとおりです。

#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;

}

コンパイラエラーがあります:

/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
4

1 に答える 1

1

1)ヘッダーに異なる宣言があります:

float operator[] (const int i);

および.cppでの定義:

float Point3D::operator[](int i )

同じパラメータで両方を作成します

const int i

2)vector3d.ccを見て(そしてここで共有してください)、おそらくPoint3Dコードを2回定義しました。

于 2012-09-25T07:10:19.363 に答える