我有一个名为cnVector.h的头文件,其实现是用cnVector.cpp编写的。这两个文件位于同一目录中。
cNormalCBP/
+ src/
+ cNormal/
+ cnUtils/
- cnVector.h
- cnVector.cpp
- main.cpp
标头包含一个简单的类定义。
class cnVector {
public:
cnVector(double, double, double);
inline cnVector cross(const cnVector&) const;
};
.cpp文件中的实现如下:
#include "cnVector.h"
/* constructor */ cnVector::cnVector(double x, double y, double z)
: x(x), y(y), z(z) {
}
cnVector cnVector::cross (const cnVector& vOther) const {
return cnVector(
y * vOther.z + z * vOther.y,
z * vOther.x + x * vOther.z,
x * vOther.y + y * vOther.x );
}
现在,由于对 cnVector::cross(cnVector const&) const; 的未定义引用,main.cpp中的以下代码在第3行中断。
请注意如何识别构造函数实现,而不是识别方法。cnVector::cross
int main() {
cnVector v1(1, 0, 0), v2(0, 1, 0);
cnVector v3 = v1.cross(v2);
}
我还收到一条错误消息警告: inline function 'cnVector cnVector::cross(const cnVector&) const' used but never defined。
将实现复制到main.cpp工作。
你能解释一下为什么我可以构造一个cnVector实例但其他方法的实现不被识别吗?