Visual Studio丢失了所有引用

时间:2018-08-23 07:41:25

标签: c++ visual-studio visual-studio-2017 sdl project

我在Visual Studio 2017中的C ++ Projekt上工作了很长时间。

现在,我尝试编译我的项目,它向我显示了180多个构建错误。看来他失去了对我班级的所有引用。

基类未定义/方法未找到等。

Inlude部分本身未显示任何错误,因此感觉他能够找到文件。

enter image description here 他还在代码中突出显示了我的课程,因此我认为他应该能够找到所有内容。

有人知道如何解决此错误吗?

输出

1>------ Erstellen gestartet: Projekt: SDL Project Template1, Konfiguration: Debug Win32 ------
1>colliderWall.cpp
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(9): error C2504: "GameObject": Basisklasse undefiniert
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(12): error C2061: Syntaxfehler: Bezeichner "reffer"
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(12): error C2535: "gameCamera::gameCamera(void)": Memberfunktion bereits definiert oder deklariert
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(11): note: Siehe Deklaration von "gameCamera::gameCamera"
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(19): error C2061: Syntaxfehler: Bezeichner "GameObject"
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(15): error C3668: "gameCamera::logik": Die Methode mit dem Überschreibungsspezifizierer "override" hat keine Basisklassenmethoden überschrieben.
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(16): error C3668: "gameCamera::draw": Die Methode mit dem Überschreibungsspezifizierer "override" hat keine Basisklassenmethoden überschrieben.
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(17): error C3668: "gameCamera::save": Die Methode mit dem Überschreibungsspezifizierer "override" hat keine Basisklassenmethoden überschrieben.
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(18): error C3668: "gameCamera::load": Die Methode mit dem Überschreibungsspezifizierer "override" hat keine Basisklassenmethoden überschrieben.
1>h:\15. engine\sdl project template1\sdl project template1\gamecamera.h(19): error C3668: "gameCamera::onCollide": Die Methode mit dem Überschreibungsspezifizierer "override" hat keine Basisklassenmethoden überschrieben.
1>h:\15. engine\sdl project template1\sdl project template1\gameobject.h(14): error C2061: Syntaxfehler: Bezeichner "reffer"
1>h:\15. engine\sdl project template1\sdl project template1\gameobject.h(14): error C2535: "GameObject::GameObject(void)": Memberfunktion bereits definiert oder deklariert
1>h:\15. engine\sdl project template1\sdl project template1\gameobject.h(13): note: Siehe Deklaration von "GameObject::GameObject"
1>h:\15. engine\sdl project template1\sdl project template1\gameobject.h(22): error C2143: Syntaxfehler: Es fehlt ";" vor "*"
1>h:\15. engine\sdl project template1\sdl project template1\gameobject.h(22): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>h:\15. engine\sdl project template1\sdl project template1\gameobject.h(22): error C2238: Unerwartete(s) Token vor ";"
1>h:\15. engine\sdl project template1\sdl project template1\gameobject.h(23): error C2143: Syntaxfehler: Es fehlt ";" vor "*

gameCamera.h

#pragma once
#include "Transform.h"
#include "SpriteRenderer.h"
#include "reffer.h"
#include "GameObject.h"

class gameCamera :
    public GameObject
{
public:
    gameCamera();
    gameCamera(reffer* _refObj);
    ~gameCamera();

    void logik()    override;
    void draw()     override;
    void save()     override;
    void load()     override;
    void onCollide(GameObject * coll) override;
};

1 个答案:

答案 0 :(得分:4)

感觉就像您有循环包含依赖项。尝试将#include "SpriteRenderer.h"#include "Transform.h"#include "reffer.h"移到gameCamera.cpp并为reffer添加前向声明。那么gameCamera.h中唯一包含的内容就是GameObject.h,事情可能会奏效。

通常,良好的做法是将给定标头中包含的标头的数量保持在最低限度-如果需要,可以将它们包含在.cpp中,否则应尽量使用前向声明尽可能。它主要减少了编译时间(和重新编译雪崩),但也有助于避免或简化对像您这样的病例的诊断。