没有此构造函数的实例
No Instance of this constructor
所以我正在为 OpenGL 程序制作相机 class,但我遇到了基本 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() 。那时,我被告知变量必须有一个类类型。
有什么明显的东西在盯着我看吗?
在此声明中:
Camera(vec3 pos(), vec3 fron(), vec3 up(), GLfloat y, GLfloat p, GLfloat r);
您将 pos
、fron
和 up
声明为函数(不带参数并返回 vec3
)。
删除括号(在声明和定义中):
Camera(vec3 pos, vec3 fron, vec3 up, GLfloat y, GLfloat p, GLfloat r);
所以我正在为 OpenGL 程序制作相机 class,但我遇到了基本 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() 。那时,我被告知变量必须有一个类类型。
有什么明显的东西在盯着我看吗?
在此声明中:
Camera(vec3 pos(), vec3 fron(), vec3 up(), GLfloat y, GLfloat p, GLfloat r);
您将 pos
、fron
和 up
声明为函数(不带参数并返回 vec3
)。
删除括号(在声明和定义中):
Camera(vec3 pos, vec3 fron, vec3 up, GLfloat y, GLfloat p, GLfloat r);