【发布时间】:2012-03-07 07:49:39
【问题描述】:
我在头文件中定义一个结构,然后在对应的 .cpp 文件中设置其成员。为此,我使用了一个函数,该函数应该在其范围内创建一个(相同的)结构,然后返回它。像这样的:
在标题中:
#include <things>
class GLWindow : public QGLWidget, public QGLFunctions
{
Q_OBJECT
public:
GLWindow(QWidget *parent = 0);
~GLWindow();
//....
struct Drawable
{
GLuint vertexBuffer;
GLuint indexBuffer;
int faceCount;
QMatrix4x4 transform;
}cube;
GLuint cubeTex;
Drawable CreateDrawable(GLfloat* C_vertices, GLfloat* C_tex, GLfloat* C_normals, GLushort* C_facedata, int faces);
//.....
};
在 cpp 文件中:
#include "glwindow.h"
Drawable GLWindow :: CreateDrawable(GLfloat *C_vertices, GLfloat *C_tex, GLfloat *C_normals, GLushort *C_facedata, int faces)
{
int faceCount =faces;
QMatrix4x4 Transform;
Transform.setToIdentity();
GLuint VB;
/*Create vertexbuffer...*/
GLuint IB;
/*Create indexbuffer...*/
Drawable drawable;
drawable.faceCount = fCount;
drawable.transform = Transform;
drawable.vertexBuffer = VB;
drawable.indexBuffer = IB;
return drawable;
}
void GLWindow :: someOtherFunction()
{
//.....
cube = CreateDrawable(cube_vertices, cube_tex, cube_normals, cube_facedata, cube_face);
//.....
}
我收到一条错误消息,指出 'Drawable' 没有命名类型,但我无法理解为什么会收到此错误,或者我可以做些什么来消除它。 p>
【问题讨论】:
-
可能是拼写错误
CreateDrawable在您的标头声明中返回void并在源代码中返回Drawable -
在你的头文件中,不应该是
Drawable CreateDrawable(...)而不是void CreateDrawable(...)吗? -
another.anon.coward 和 Treb 是的。已编辑。
-
@LuchianGrigore 是的,我打算这样做,但不是现在。感谢您提出。