在头文件中声明了一个类,在CPP文件中却出现错误error C2653: “EdgeCurve”: 不是类或命名空间名称,这两个文件在同一目录。求大神解答

baidu_31903513 2015-10-10 04:28:26
我是在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: 无法从以前的错误中恢复;正在停止编译
...全文
425 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
强长黑粗硬 2019-02-06
  • 打赏
  • 举报
回复
结贴给分啊。
LZ一点职业道德都没有。
baidu_31903513 2015-10-10
  • 打赏
  • 举报
回复
谢谢#3楼的朋友啊,改了没有出现那样的错误了
fefe82 2015-10-10
  • 打赏
  • 举报
回复 7
把 #include "stdafx.h" 放到第一行
baidu_31903513 2015-10-10
  • 打赏
  • 举报
回复
不知道为什么会报这样的错,类已经定义了,而且类的构造函数和析构函数都没有返回值
eziowayne 2015-10-10
  • 打赏
  • 举报
回复
错误提示很详尽了,再不会就把错误提示贴到google上去搜。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧