在'。'标记之前的预期构造函数,析构函数或类型转换

时间:2010-10-13 11:49:08

标签: c struct

BALL ball1;//,ball2,ball3;
ball1.bx = 0;
ball1.by = 0;
ball1.bvx = 1.0;
ball1.bvy = 1.0;
ball1.radius = 5.0;

BALL是一个单独的.h文件中的结构,我使用了以下代码:

typedef struct ball
{
 GLfloat bx;
 GLfloat by;
 GLfloat bvx;
 GLfloat bvy;
 GLfloat radius;

}BALL;

typedef struct paddle
{
 GLfloat length;
 GLfloat width;
 GLfloat px;
 GLfloat py;
 GLfloat pvx;
 GLfloat pvy;
 bool alongX;
}PADDLE;

但是在主文件中我收到了上述错误!

主文件中的代码是:

#include "header.h"
#include "ball_pad.h"
#include "pingpong.h"
#include "texture.h"
#include "3dsloader.h"


float A = 45.0f,AA = -45.0f;
float B = 35.0f,BB = -35.0f;
/**********************************************************
 *
 * VARIABLES DECLARATION
 *
 *********************************************************/

// The width and height of your window, change them as you like
int screen_width=640;
int screen_height=480;

// Absolute rotation values (0-359 degrees) and rotation increments for each frame
double rotation_x=0, rotation_x_increment=0.1;
double rotation_y=0, rotation_y_increment=0.05;
double rotation_z=0, rotation_z_increment=0.03;

// Absolute rotation values (0-359 degrees) and rotation increments for each frame
double translation_x=0, translation_x_increment=1.0;
double translation_y=0, translation_y_increment=0.05;
double translation_z=0, translation_z_increment=0.03;

// Flag for rendering as lines or filled polygons
int filling=1; //0=OFF 1=ON

//Now the object is generic, the cube has annoyed us a little bit, or not?
obj_type board,ball,pad_alongX,pad_alongY;

BALL ball1;//,ball2,ball3;
ball1.bx = 0;
ball1.by = 0;
ball1.bvx = 1.0;
ball1.bvy = 1.0;
ball1.radius = 5.0;

2 个答案:

答案 0 :(得分:2)

由于代码在函数内发生时有效,我假设它出现在任何函数之外。

ball1.XXX = YYY;行都是赋值语句,这些只能在函数中出现。

如果要使用某组值初始化ball1对象,可以这样做:

BALL ball1 = { 0, 0, 1.0, 1.0, 5.0 };

或者,如果您的编译器支持它:

BALL ball1 = { .bx = 0, .by = 0, .bvx = 1.0, .bvy = 1.0, .radius = 5.0 };

答案 1 :(得分:1)

您必须发布更多代码才能让某人确切地告诉您问题所在。很多时候这个错误是由于某些语法错误导致的,例如在类的末尾没有放置分号(可能是GLfloat?),而不是在您尝试创建或使用的对象前面指定命名空间。另外,请确保源文件中包含所有必需的包含。

您可以尝试修剪代码并编译以查看它何时成功,然后从该点开始向前工作。在这里,我将首先评论结构的所有GLfloat成员以及依赖于它们并编译的任何代码。继续修剪,直到找到问题文件为止。