多个构造函数C ++声明

时间:2012-09-25 07:00:23

标签: c++ declaration

我的班级错误名为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

1 个答案:

答案 0 :(得分:1)

1)标题中有不同的声明:

float operator[] (const int i);

和.cpp中的定义:

float Point3D::operator[](int i )

使用相同的参数

制作它们
const int i

2)看看vector3d.cc(请在这里分享), 您可能已经定义了两次Point3D代码。