【发布时间】:2010-10-22 18:09:44
【问题描述】:
我已经摆脱了循环依赖,但仍然遇到另一个问题。
我仍在学习中,希望有人可以向我解释我的实施有什么问题。很抱歉给我带来了麻烦,但我真的很感谢所有帮助我的人。
所以,我现在遇到的问题是,在我的 Vec3 类中,它正在尝试使用四元数,但它没有四元数的“完整类型”。
以下是我所拥有的:
vec3.h
#ifndef VEC3_H
#define VEC3_H
#include "point.h"
#include <math.h>
class Quaternion;
class Vec3
{
friend ofstream& operator <<(ofstream& output, const Vec3& p);
friend ifstream& operator >>(ifstream& input, Vec3& p);
public:
Vec3();
Vec3(double _x, double _y);
Vec3(double _x, double _y, double _z);
double x,y,z;
//Operators
Vec3 operator -(Vec3 a) const;
Vec3 operator /(double s) const;
Vec3 operator *(double s) const;
Vec3 operator *(Quaternion q) const;
// Used to do vector Vec3 addition
Vec3 operator +(Vec3 a) const;
Point operator +(Point a) const;
Vec3& operator =(Point a);
Vec3 crossProduct(Vec3 v1); // Itself cross v1
double dotProduct(Vec3 v);
double length();
void normalize();
};
#endif
四元数.h
#ifndef QUATERNION_H
#define QUATERNION_H
#include "vec3.h"
class Quaternion
{
public:
Quaternion(Vec3 v);
Quaternion(double w, Vec3 v);
Vec3 v;
double scalar;
Quaternion operator *(Quaternion s);
Quaternion conjugate();
};
#endif
vec3.cpp 这个函数的每一行都有错误。
...
Vec3 Vec3::operator *(Quaternion q) const
{
// Change this vector into a quaternion
Quaternion currentQuat(0, Vec3(x,y,z));
Quaternion newQuat = currentQuat*q;
Quaternion result = q.conjugate()*newQuat;
return result.vec();
}
...
【问题讨论】:
标签: c++ incomplete-type