1
我对编程非常陌生,但正努力学习! 我正在尝试更新相机,以便在项目中启动3D对象和其他内容。 所以我需要创建2个结构,一个用于相机的Vector3。错误:构造函数“Camera :: Camera”的实例与参数列表相匹配
Vector3 - 有三个浮点数叫做x,y和z。
相机 - 有三个Vector3s称为眼睛,中心和向上。
我需要在我的HelloGL.h文件中定义这些结构并首先定义我的Vector3。 然后我定义我的相机指针在HelloGL头 但是当我尝试在我HelloGL构造函数初始化此我得到的错误
“错误:没有构造函数的实例‘相机::相机
’参数列表匹配”这是我认为这是不工作(该HelloGL.h和HelloGL.cpp)
(HelloGL.h)
#pragma once
#define REFRESHRATE 16
#define Vector3 Vector3
#include <Windows.h> //Required for OpenGL on Windows
#include <gl/GL.h> //OpenGL
#include <gl/GLU.h> //OpenGL Utilities
#include "GL\freeglut.h" //freeglut library
class HelloGL
{
public:
HelloGL(int argc, char* argv[]);
~HelloGL();
void Display();
void Update();
void Keyboard(unsigned char key, int x, int y);
Camera* camera;
private:
float rotation;
float rotationRect;
float rotationSquare;
float rotationTriangle;
};
class Vector3
{
public:
Vector3(float x, float y, float z);
private:
float x;
float y;
float z;
};
class Camera
{
public:
Camera(Vector3 eye, Vector3 center, Vector3 up);
private:
Vector3 eye;
Vector3 center;
Vector3 up;
};
(HelloGL.cpp)代码
#include "HelloGL.h"
#include "GLUTCallbacks.h"
HelloGL::HelloGL(int argc, char* argv[])
{
camera = new Camera();
rotation = 0.0f;
rotationRect = 0.0f;
rotationSquare = 0.0f;
rotationTriangle = 0.0f;
GLUTCallbacks::Init(this);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(500, 500);
glutInitWindowPosition(1, 1);
glutCreateWindow("Simple But Lit OpenGL Program");
glutDisplayFunc(GLUTCallbacks::Display);
glutTimerFunc(REFRESHRATE, GLUTCallbacks::Timer, REFRESHRATE);
glutKeyboardFunc(GLUTCallbacks::Keyboard);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0, 0, 800, 800);
gluPerspective(45, 1, 0.1, 1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutMainLoop();
}
HelloGL::~HelloGL()
{
}
如果有人可以提前致谢!
所以如果我想通过它与正确的论据,我会说: camera = new Camera(eye,center,up); –
'新相机(Vector3 {},Vector3 {},Vector3 {})'?或者类似的,你如何将参数传递给其他函数? – JVApen
传递参数,但是它仍然给每个{} s提供相同的错误。 你认为 (眼睛的Vector3; 的Vector3中心; 的Vector3了;) 实际上并没有宣布每次这些并导致它尝试和送东西不存在? PS:就像我说的,我对编程非常陌生,所以如果看起来我不明白你想说什么,或者我错过了一件非常基本的事情,请告诉我,我正在努力学习我自己也很难意识到我的错误 –