当前位置:主页>销售管理软件> 列表

问个C++问题,关于结构的??? 找免费网吧管理软件

进销存软件版1楼: 不太懂这个结构的定义,
struct Vertex
{
Vertex(){}
Vertex(float x, float y, float z)
{
_x = x; _y = y; _z = z;
}
float _x, _y, _z;
static const DWORD FVF;
};
const DWORD Vertex::FVF = D3DFVF_XYZ;
-----------------------------------------------------------
Vertex(){}
Vertex(float x, float y, float z)
这两行是什么意思呢?

用的时候是这样用的:
Vertex* V1;
VB->Lock(0, 0, (void**)&V1, 0);
// V1 of a unit cube
V1[0] = Vertex(-1.0f, -1.0f, -1.0f);
V1[1] = Vertex(-1.0f, 1.0f, -1.0f);

难道是定义了个结构的数组吗??

2楼: C++的结构体
优于数组
请参考
http://tech.163.com/05/0331/14/1G68FN0P00091589.html 如免费网吧管理软件

3楼: 我也在学C++。。。正学到这一块。。。
解决不了楼主问题,但可以帮楼主顶。。。
共同进步。。。
不知道楼主用c++builder 还是VC++

4楼: SiWeiLiuLang:
你提供的链接,只是讲了结构的基本定义,没有给我答案。
我想知道:
Vertex(){}
Vertex(float x, float y, float z)
这两行是什么意思?
正常结构赋值是这样的:
V1.x = -1.0f;
V1.y = -1.0f;
V1.z = -1.0f;

这里为什么可以这样用?
V1[0] = Vertex(-1.0f, -1.0f, -1.0f);
V1[1] = Vertex(-1.0f, 1.0f, -1.0f);

5楼: struct Vertex
{
Vertex(){} //构造方法一
Vertex(float x, float y, float z) //构造方法二
{
_x = x; _y = y; _z = z;
}
float _x, _y, _z;
static const DWORD FVF;
};

6楼: 这是结构体重载。
C++中的结构体与对象类体是一个意思,反映到内存就是一块区域。顶点结构体定义了几种
使用的类型:
Vertex(Vertex),一个顶点结构中含有另一个结构体。
Vertex(x,y,x),一个顶点结构包含三个浮点值。
Vertex(x,y,z,fvf),一个顶点结构中除了三个顶点值外还包含一个顶点描述符。

最后关于Vertex[x],这个在C++中出现很正常,因为它声明时把V1声明为Vertex*,就是说,
V1是一个指向Vertex结构体的指针。C++中可以直接对指针运算,V1[0],表示V1的指针所在
位置,V1[1]表示V1+Sizeof(Vertex)后的位置。Delphi中为达到这个效果,特意引入PByteArray
这个数据类型,不过它移动的只能是sizeof(Byte)尺寸的指针距离。因此,代码里出现V1[x],
这种看上去象Delphi定义了数组一样的情况,实际上是移动了指针。为此,C++在使用前要memset
对这个V1分配合适的内存,否则一样越界。

进销存软件版7楼: 谢谢小雨哥,解答很精彩!!