gpt4 book ai didi

c++ - 为什么我会收到 "is not a class or namespace"错误

转载 作者:太空狗 更新时间:2023-10-29 23:41:06 24 4
gpt4 key购买 nike

我有一个生成错误的文件

"Block" is not a class or a namespace name

在线

typedef Block::point point;

但是,我确信这是一个我已经创建并#included 在下面的文件中的类

'纹理.h'。

    #pragma once
#include "Block.h"
#include <iostream>
#include <vector>
#include <GL/glut.h>
#include "lodepng.h"

using namespace std;
typedef Block::point point;


class Texture
{



public:
Texture(int width, int height, string filename);//initialises our texture and loads its pixeldata into a buffer
Texture(void);
~Texture(void);

void draw(point centerPoint, point dimensions);

unsigned int w;//width of our imagefile
unsigned int h;

GLuint texID;//the ID we will give OGL for this particular texture.

private:
vector<unsigned char> image;
void texGLInit();
};

另外,这里是有问题的 block.h 文件。

#pragma once
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "Texture.h"

class Block
{


public:
struct point
{
GLfloat x, y;
};

enum State {STATIC, FALLING, SELECTED};

enum Colour {RED, BLUE, PURPLE, GREEN, YELLOW, DEAD};

Block(void);
~Block(void);

Block(int gridPosX, int gridPosY, point offset);
point gridPos;//the blocks designated position in the 8x8 array
point centerPos;//the blocks coordinates for the actual purpose of drawing

State blockState;//the state of the block
Colour blockColour;//the colour of the block

void move();//checks whether the block is in a falling state and moves it appropriately
void drawBlock();//no need to include the drawing coords as parameters. the block knows where it should be. The grid will simply tell it to draw itself.

private:
void fall();//decrements the blocks position
void assignRandomColour();//assigns a random colour to the block dependant upon its' texture
void generateWorldPos();//gets our block a center position, for us to later to use to draw it.
//the above function will also inherently define the size of each cell in the grid. I'm thinking each
//cell should be 40x40. So each cell will be offset initially by 20px by 20px.



point gridOffset;



};

我不知道为什么我会为肯定存在的类收到此错误。提前致谢。

最佳答案

我看到循环包含:Block.h 包含 Texture.h,其中包含 Block.h

在这个网站上搜索“cyclic header dependency”,你会看到很多关于这个的主题,在那里你可以找到解决这个难题的方法,最常见的是使用前向声明成员数据的类和指针声明。类的前向声明可帮助您避免包含标题,数据的指针声明可帮助您定义封闭类。这只是一个提示,现在搜索上述主题以获得详细答案。

关于c++ - 为什么我会收到 "is not a class or namespace"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862839/

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