我定义了如下的一个类(其他成员函数省略)
class VTMesh {
public:
//Constructor
VTMesh(){}
VTMesh(double x, double y, double z)
{
_verts[0] = x;
_verts[1] = y;
_verts[2] = z;
}
double _verts[3];
};
之后定义了一个存放类对象指针的容器 vector <VTMesh *> _vertices;
接下来我进行如下操作
VTMesh *v = &VTMesh(v_x, v_y, v_z);
_vertices.push_back(v);
当运行到push_back()时程序报错了,大神们为什么呢?
第一次求助轻拍~~
class VTMesh {
public:
//Constructor
VTMesh(){}
VTMesh(double x, double y, double z)
{
_verts[0] = x;
_verts[1] = y;
_verts[2] = z;
}
double _verts[3];
};
之后定义了一个存放类对象指针的容器 vector <VTMesh *> _vertices;
接下来我进行如下操作
VTMesh *v = &VTMesh(v_x, v_y, v_z);
_vertices.push_back(v);
当运行到push_back()时程序报错了,大神们为什么呢?
第一次求助轻拍~~
解决方案 »
- 读过《深入解析windows操作系统》第四版的进,缓存管理问题
- ??? 过滤网页的Flash并替换文字 ???
- 求助:串口程序(怎么设置接收 5 个数据后中断)谢谢!
- CList 如何返回数据的引用
- 在对话框上调用gif动画的问题,请进来进来看看!
- 谁有cximage599完整的源码及DEMO,收到后立即给分
- 文件内存映射(file mapping)中使用 memcpy 失败
- VC中用ADO操作MySql数据库中文问题 .
- 不是很菜的问题,高手请进!!!(:-))
- 急!如何在对话框中打开一张图片并显示出来?
- 如何抓取php,asp,jsp等动态页面技术生成的静态页面的html代码?
- CDHtmlDialog内的网页 子页面 新开网页显示的问题?
改为
VTMesh *v = new VTMesh(v_x, v_y, v_z);
还是不行啊~~我调试的时候v初始化对的,运行到push_back()的时候就会跳出来对话框
Unhandled exception in ***.exe: 0xC0000005: Access Violation
我用你同样的代码也没有错,不过要注意的地方是需要NEW出来再传指针,否则在使用的时候会报错,你的异常估计也是这里!
public:
//Constructor
VTMesh(){}
VTMesh(double x, double y, double z)
{
_verts[0] = x;
_verts[1] = y;
_verts[2] = z;
}
//Functions for accessing data
double get_vert(unsigned int i) const { return _verts[i]; }
void add_vert(unsigned int vid, double value){ _verts[vid] = value; } double _verts[3];
private:
};class TMesh
{
public:
TMesh();
virtual ~TMesh(); //Functions for Creation
void ReadOffFile(char *filename);
//Functions for output
void OutMeshOffFile(char *filename);
//Function for accessing data
unsigned int v_count() const { return _vertices.size(); } void add_vertex(VTMesh *v)
{
_vertices.push_back(v);
} //Clear
void clear()
{
_vertices.clear();
_facets.clear();
}
vector <VTMesh *> _vertices;
private:
};
以上为TMesh.h文件以下为TMesh.cpp文件
TMesh::TMesh()
{}TMesh::~TMesh()
{}void TMesh::ReadOffFile(char *filename)
{
ifstream ifile(filename);
if (!ifile)
{
return;
}
string line;
string str;
int i=0; int v_size;
int f_size;
int color;
//off文件格式:第一行以off打头,第二行点数和面数,第三行开始是点,接着是面上的点的序号。
while(i < 2)
{
getline(ifile,line);
i++;
}
istringstream isstr(line);
isstr>>v_size>>f_size>>color; double v_x, v_y, v_z;
for(; i < v_size+2;)
{
getline(ifile,line);
istringstream isvert(line);
isvert >> v_x >> v_y >> v_z;
VTMesh *v = new VTMesh(v_x, v_y, v_z);
add_vertex(v); i++;
}
}问题出在红色部分
最后光标指在了vector库的
iterator end()
{return (_Last); }
调试的时候能看到指针已经赋值过了
不应该用无名对象吧? 是不是应该构造一个有名对象,然后取对象的地址啊?