尽管编辑了我的包含语句以修复,但得到“错误 C2653:'TextureManager':不是类或命名空间名称”

Posted

技术标签:

【中文标题】尽管编辑了我的包含语句以修复,但得到“错误 C2653:\'TextureManager\':不是类或命名空间名称”【英文标题】:Getting "error C2653: 'TextureManager': is not a class or namespace name" despite editing my include statements to fix尽管编辑了我的包含语句以修复,但得到“错误 C2653:'TextureManager':不是类或命名空间名称” 【发布时间】:2021-11-14 13:30:09 【问题描述】:

我收到关于类/命名空间不存在的错误 c2653。有问题的文件称为TextureManager.h,它包含类TextureManager,奇怪的是VS说该类存在,我可以使用右键菜单中的“转到”按钮来访问它。但是当我去构建时,它给了我错误。另外,如果我关闭项目并重新打开它,它会说它无法找到源文件。

这是我尝试使用 TextureManager 的地方,第 14 行抛出了错误(带有 TextureManager::LoadTexture() 的那个)

##pragma once
#include "../TextureManager.h"


class SpriteComponent : public Component

private:
    SDL_Texture* texture;
public:

    SpriteComponent(const char* path)
    
        texture = TextureManager::LoadTexture(path);
    
;

这是 TextureManager.h

#pragma once
#include "Game.h"

class TextureManager

public:
    static SDL_Texture* LoadTexture(const char* fileName);
;

这是它的 .cpp

#include "TextureManager.h"

SDL_Texture* TextureManager::LoadTexture(const char* fileName)

    SDL_Surface* tempSurface = IMG_Load(fileName);
    SDL_Texture* tex = SDL_CreateTextureFromSurface(Game::renderer, tempSurface);
    SDL_FreeSurface(tempSurface);
    return tex;


文件目录看起来像这样(使用 + 表示文件夹和 - 表示文件)

+Project
    +Assets
        -some pngs
    +Src
        -Game.cpp
        -Game.h
        -main.cpp
        -Map.cpp
        -Map.h
        -TextureManager.cpp
        -TextureManager.h
        +ECS
            -Components.h
            -ECS.h
            -PositionComponent.h
            -SpriteComponent.h

编辑

要删除 SpriteComponent 类中所有不必要的代码以及其他 2 个代码示例,我不确定是哪个部分导致了错误。

有人提到循环包含,textureManager.h 确实包含 game.h,其中包含 components.h,其中包含 Sprite 组件,如果这是问题,那将是一个好的解决方案,我尝试对此进行测试,但同时测试其他部分坏了,所以虽然我没有收到那个错误,但我认为这是因为构建中从不需要该文件。

【问题讨论】:

哪一行引发了错误?找不到什么来源? 我猜你有循环包含。请提供minimal reproducible example spriteComponent(char*) 和 update() 函数中出现错误,所有区域都具有 TextureManager::。 【参考方案1】:

这是循环包含,所以我将 components.h 的包含从 game.h 移到了 game.cpp 文件。

谢谢你们。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于尽管编辑了我的包含语句以修复,但得到“错误 C2653:'TextureManager':不是类或命名空间名称”的主要内容,如果未能解决你的问题,请参考以下文章

试图刷新我的编码。回文练习给我一个问题。谷歌搜索了我的错误,但无法修复它。

尽管使用了 if 语句,但 RelatedObjectDoesNotExist 错误

尽管满足条件,我的 for 循环仍在继续

如果满足多个条件,如何使用 If 语句计算数字?

如何修复使用optimize.minimize()时报告的值错误但引用的函数没有错误?

我可以在有角度的项目中重新安装npm来修复它吗?