2016-04-20 26 views
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() 
{ 

} 

如果有人可以提前致谢!

回答

0

你仅仅使用下面的构造函数定义的摄像头:

Camera(Vector3 eye, Vector3 center, Vector3 up); 

,而你与camera = new Camera();,默认的构造函数调用它。要么你应该添加一个没有参数的构造函数,或者将正确的参数传递给这个构造函数。

+0

所以如果我想通过它与正确的论据,我会说: camera = new Camera(eye,center,up); –

+0

'新相机(Vector3 {},Vector3 {},Vector3 {})'?或者类似的,你如何将参数传递给其他函数? – JVApen

+0

传递参数,但是它仍然给每个{} s提供相同的错误。 你认为 (眼睛的Vector3; 的Vector3中心; 的Vector3了;) 实际上并没有宣布每次这些并导致它尝试和送东西不存在? PS:就像我说的,我对编程非常陌生,所以如果看起来我不明白你想说什么,或者我错过了一件非常基本的事情,请告诉我,我正在努力学习我自己也很难意识到我的错误 –

相关问题