所以我正在为OpenGL程序制作一个Camera类,并且我遇到了基本的C ++代码,我不允许用值初始化它。我的实现如下:
class Camera{
public:
Camera();
Camera(vec3 pos(), vec3 fron(), vec3 up(), GLfloat y, GLfloat p, GLfloat r);
...
};
Camera::Camera(vec3 pos(), vec3 fron(), vec3 up(), GLfloat y, GLfloat p, GLfloat r)
{
cout << "Hello World" << endl;
}
剩下的就在我的主要内容中:
int main(){
GLfloat lastx = width/2.0f;
GLfloat lasty = height/2.0f;
GLfloat yaw = 90.0f; //yaw set to -90 because yaw of 0.0 points to right or something wierd happens in euler angles
GLfloat pitch = 0.0f;
vec3 camerapos = vec3(0.0f, 0.5f, -10.0f);
vec3 camerafront = vec3(0.0f, 0.5f, 1.0f);
vec3 cameraup = vec3(0.0f, 1.0f, 0.0f);
Camera cam(camerapos, camerafront, cameraup, yaw, pitch, GLfloat(0.0f));
}
奇怪的是,我尝试将其初始化为空,并填充它(使用相同的功能,请注意),但我将其称为init()。那时,我被告知该变量必须有一个Classtype。
任何明显盯着我的东西都显得很明显?
答案 0 :(得分:2)
在此声明中:
pos
您将fron
,up
和vec3
声明为函数(不带参数并返回Camera(vec3 pos, vec3 fron, vec3 up, GLfloat y, GLfloat p, GLfloat r);
)。
删除括号(在声明和定义中):
Artist