在头文件中声明了一个类,在CPP文件中却出现错误error C2653: “EdgeCurve”: 不是类或命名空间名称,这两个文件在同一目录。求大神解答
我是在VS2005中开发的,
//头文件EdgeCurve.h
#pragma once
class EdgeCurve
{
public:
EdgeCurve();
~ EdgeCurve();
ON_3dPoint p_start, p_end;
ON_3dPoint Initpoint[4];
//Initpoint[-1]=Initpoint[4]=0;
ON_3dPoint Evpoint[5];
ON_3dVector start_Der1,start_Der2;
ON_3dVector end_Der1,end_Der2;
ON_3dVector start_normal,end_normal;
ON_3dVector start_du,start_dv;
ON_3dVector end_du,end_dv;
double start_k1,start_k2;
double end_k1,end_k2;
double start_k, end_k;
int left_fi, right_fi;
int left_ei, right_ei;
double f1,f2,f3,f4;
ON_3dVector n1,n2;
BOOL b_boudary;
void InitCurve();
void EvCurve();
void ModifyCurve();
};
//EdgeCurve.cpp
#include "EdgeCurve.h"
#include "stdafx.h"
#include <math.h>
EdgeCurve:: EdgeCurve()
{
}
EdgeCurve::~EdgeCurve()
{
}
void EdgeCurve::InitCurve()
{
ON_3dVector v1,v2;
ON_3dVector v=(ON_3dVector)(p_end-p_start);
v1=v-ON_DotProduct(v,start_normal)*start_normal;
v1.Unitize();
v2=v-ON_DotProduct(v,end_normal)*end_normal;
v2.Unitize();
Initpoint[0]=p_start;
Initpoint[1]=p_start+(2*ON_DotProduct(v,v1)-ON_DotProduct(v,v2)*ON_DotProduct(v1,v2))*v1/(4-pow(ON_DotProduct(v1,v2),2));
Initpoint[2]=p_end+(ON_DotProduct(v,v1)*ON_DotProduct(v1,v2)-2*ON_DotProduct(v,v2))*v2/(4-pow(ON_DotProduct(v1,v2),2));
Initpoint[3]=p_end;
}
void EdgeCurve::EvCurve()
{
for(int i=0;i<5;i++)
{
Evpoint[i]=i*Initpoint[i-1]+(4-i)*Initpoint[i]/4
}
}
void EdgeCurve::ModifyCurve()
{
start_Der1=Evpoint[1]-Evpoint[0];
end_Der1=Evpoint[4]-Evpoint[3];
ON_3dVector temp_v1,temp_v2;
double start_angle,end_angle;
start_angle=ON_DotProduct(start_Der1,start_du);
start_angle/=start_Der1.Length()*start_du.Length();
start_angle=acos(start_angle);
end_angle=ON_DotProduct(end_Der1,end_du);
end_angle/=end_Der1.Length()*end_du.Length();
end_angle=acos(end_angle);
start_k=start_k1*pow(cos(start_angle),2)+start_k2*pow(sin(start_angle),2);
end_k=end_k1*pow(cos(end_angle),2)+end_k2*pow(sin(end_angle),2);
temp_v1=Evpoint[2]-Evpoint[1];
temp_v2=Evpoint[2]-Evpoint[3];
double x,z;
ON_3dVector N=ON_CrossProduct(start_normal,end_normal);
ON_3dVector B=ON_CrossProduct(N,start_normal);
x=16*start_Der1.LengthSquared()*start_k/12-ON_DotProduct(temp_v1,start_normal);
z=(16*end_Der1.LengthSquared()*end_k/12-ON_DotProduct(temp_v2,end_normal)-x*ON_DotProduct(start_normal,end_normal))/ON_DotProduct(B,end_normal);
Evpoint[2]=Evpoint[2]+x*start_normal+z*B;
}
//出现的相关错误,求大神解答
1>EdgeCurve.cpp
1>.\EdgeCurve.cpp(4) : error C2653: “EdgeCurve”: 不是类或命名空间名称
1>.\EdgeCurve.cpp(5) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>.\EdgeCurve.cpp(7) : warning C4508: “EdgeCurve”: 函数应返回一个值;假定“void”返回类型
1>.\EdgeCurve.cpp(8) : error C2653: “EdgeCurve”: 不是类或命名空间名称
1>.\EdgeCurve.cpp(8) : fatal error C1903: 无法从以前的错误中恢复;正在停止编译