错误:没有构造函数“Camera :: Camera”的实例与参数列表匹配

时间:2016-04-20 12:13:27

标签: c++ opengl camera

我是编程的新手,但我正在努力学习! 我正在尝试更新相机,以便我可以在我的项目中启动3D对象和其他东西。 所以我需要创建2个结构,一个用于Vector3的Vector3。

Vector3 - 有三个浮点数称为x,y和z。

相机 - 有三个Vector3,分别为eye,center和up。

我需要在HelloGL.h文件中定义这些结构并首先定义我的Vector3。 然后我在HelloGL标题中定义了我的Camera指针 但是当我尝试在我的HelloGL构造函数中初始化它时,我得到了错误

“错误:没有构造函数的实例”Camera :: Camera“匹配参数列表”

以下是我认为无效的代码(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()
{

}

如果有人可以提供帮助,请提前致谢!

1 个答案:

答案 0 :(得分:0)

您只使用以下构造函数定义了一个Camera:

function navigate($path){
    $directorio = $_SERVER['DOCUMENT_ROOT'] . '/' . $path;
    $scan = scandir($directorio);
    return $scan;
}
   session_start();
   $dir = $_SERVER['DOCUMENT_ROOT'] . '/';

if(ISSET($_POST['datei'])){
    echo $_POST['datei'];
    $_SESSION['actualdir'] = $dir . $_POST['datei'];    
    $scanner = navigate($_SESSION['actualdir']);
}
if(!ISSET($_POST['datei'])){
    $scanner = scandir($dir);
}

当您使用Camera(Vector3 eye, Vector3 center, Vector3 up); (默认构造函数)调用它时。你应该添加一个没有参数的构造函数,或者将正确的参数传递给这个构造函数。