gpt4 book ai didi

c++ - 错误说 “camera is undefined”,但我确实定义了它

转载 作者:行者123 更新时间:2023-12-02 10:07:57 25 4
gpt4 key购买 nike

我的相机功能不起作用。该错误表明myCamera未定义,但我做了的定义。

根据错误消息,Camera是未知的覆盖说明符。

在这里,我包括了摄像机头,所以应该没问题。

level.h:


#pragma once
#include "Vectors.h"
#include "level.h"



#include "glut.h"
#include <gl/GL.h>
#include <gl/GLU.h>
#include "controls.h"
#include <stdio.h>
#include "SOIL.h"
#include <vector>
#include "camera.h"
class Scene{

public:
level(Input *in);

void renderer();

void handleInput(float dt);

void update(float dt);

void resize(int w, int h);

protected:

void displayText(float x, float y, float r, float g, float b, char* string);

void renderTextOutput();
void calculateFPS();



Input* input;


int width, height;
float fov, nearPlane, farPlane;


int frame = 0, time, timebase = 0;
camera myCamera;
};



level.cpp:,但此处声称myCamera未定义。
level::level(Input *in)
{
// Store pointer for input class
input = in;

//OpenGL settings
glShadeModel(GL_SMOOTH);
glClearColor(0.39f, 0.58f, 93.0f, 1.0f);
glClearDepth(1.0f); glClearStencil(0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, 1);
glEnable(GL_TEXTURE_2D);




gluPerspective(55.0f, (GLfloat)width / (GLfloat)height, 1, 50.0f);


camera.position.x = 0;

这是相机课;但是,没有错误消息,因此,如果这里有任何错误,我也不知道是什么。

最佳答案

您具有循环包含依赖关系。 scene.h包括camera.h,而camera.h包括scene.h

因此,当您尝试编译camera.cpp时,预处理器首先包含camera.h。在其中可以看到scene.h的包含。在scene.h中,它再次看到camera.h的包含,但是#pragma once将阻止再次包含它。请注意,此时,camera.h仅被读取,直到#include "scene.h"为止。因此,当编译器进入camera myCamera时,由于尚未完全读取相应的头文件,因此camera类型未定义。

要解决此问题,请删除scene.h中的camera.h包含。无论如何,您都不在那里使用它。如果需要从那里输入类型,请考虑使用forward declaration

此外,具有:

#pragma once
...
#ifndef _SCENE_H
#define _SCENE_H

没有道理。 #pragma once完成与include保护 _SCENE_H相同的任务。使用其中之一,而不是两者都使用。

关于c++ - 错误说 “camera is undefined”,但我确实定义了它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59250222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com