求C++/VC高手指导个编程小问题,代码在下面,不甚感激

[复制链接]
查看11 | 回复2 | 2010-12-15 10:02:41 | 显示全部楼层 |阅读模式
#include "stdafx.h"
#include
#include "glm.h"
#include
#include
#include
#include
#include
#include "TriChip.h"
typedef struct tagPoint3D
{
double x;
double y;
double z;
} CPoint3D;
typedef struct tagVector3D
{
double dx;
double dy;
double dz;
} CVector3D;
class CTriClass:public CObject
{
public:
CPoint3D vex[3];
CVector3D normal;
public:
CTriClass();
virtual~CTriClass();
virtual void Serialize(CArchive& ar);
};
class CTriChip:public CObArray
{
};
void CTriClass::Serialize(CArchive &ar)
{
if(ar.IsStoring())
ar>normal.dx>>normal.dy>>normal.dz;
}
class myOpenGL
{
public:
CTypedPtrArray myTriList;
public:
BOOL LoadSTLFile(LPCTSTR stlfile);
};
myOpenGL::LoadSTLFile(LPCTSTR stlfile)
{
FILE*file;
int type=0;
if((file=fopen(stlfile,"r"))==NULL)
return FALSE;
char str[100];
CTriClass* tri=NULL;
while(fscanf(file,"%s",str)==1)
{
if(strncmp(str,"normal",6)==0)
{
tri=new CTriClass();
fscanf(file,"%lf%lf%lf",&(tri->normal.dx),&(tri->normal.dy),&(tri->normal.dz));
fscanf(file,"%*s%*s");

fscanf(file,"%*s%lf%lf%lf",&(tri->vex[0].x),&(tri->vex[0].y),&(tri->vex[0].z));

fscanf(file,"%*s%lf%lf%lf",&(tri->vex[1].x),&(tri->vex[1].y),&(tri->vex[1].z));

fscanf(file,"%*s%lf%lf%lf",&(tri->vex[2].x),&(tri->vex[2].y),&(tri->vex[2].z));

Add(tri);
}
}
return TRUE;
}
--------------------Configuration: Laser - Win32 Debug--------------------
Compiling...
glm.cpp
F:\课题资料\STL读取\Laser\glm.cpp(81) : error C2065: 'Add' : undeclared identifier
Error executing cl.exe.
Creating browse info file...
Laser.exe - 1 error(s), 0 warning(s)
会有个不能识别Add()函数的问题,貌似这个Add函数是CArray类里的CArray::Add
int Add( ARG_TYPE newElement );但是具体怎么定义,在哪里定义我不知道,求哪位高人指点 最好把代码修改好万分感激

回复

使用道具 举报

千问 | 2010-12-15 10:02:41 | 显示全部楼层
你的Add函数,实际上是 myOpenGL的Add函数,即this->Add(tri);但是你的myOpenGL并无Add函数存在,所以会编译失败。但实际上,看你的code,你是要把从数据文件得到CTriClass 对象指针tri添加到你的myTriList容器中。简单些,使用可以这样:申明中:vector m_TriObjVect;使用: m_TriObjVect.push_back(tri);
回复

使用道具 举报

千问 | 2010-12-15 10:02:41 | 显示全部楼层
我也没看出来,你这个Add是从哪里来的。myTriList.Add()比较合理,CTypedPtrArray你这个是不是定义的CArray,用于做一个链表。CArrayAdd的用法 如下CArraymlist;定义一个实例CString a="da";//定义链表里的一个元素mlist.Add(a);//
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行