Я определяю класс в заголовочном файле. Это наследование от другого класса с именем AGameMode. В редакторе я создаю новый класс из Gamemode, и он автоматически генерирует файлы .h и. cpp. Проблема в том, что я уже включил необходимые файлы заголовков, по-прежнему не вижу класс, который хочу унаследовать от него. Вместо этого выдает ошибку. Позвольте мне объяснить с помощью кода:
//ACollectorMan_GameMode.h
#include "CoreMinimal.h"
#include "GameFramework/GameMode.h"
#include "CollectorMan_GameMode.generated.h"
UCLASS()
class MYPROJECT2_API ACollectorMan_GameMode : public AGameMode
{
GENERATED_BODY()
ACollectorMan_GameMode();
}
, когда я объявляю конструктор и компилирую, он показывает мне ошибку. Но если я не буду это объявлять, в строке 7 редактора (класс MYPROJECT2_API ACollectorMan_GameMode: publi c AGameMode) не будет выдано сообщение об ошибке (все равно будет красным).
Это не только для Gamemode родительский класс. У классов персонажей или пешек такая же проблема. Когда я создаю VS, я получаю эту ошибку:
CollectorMan_GameMode.cpp.obj : error LNK2019: unresolved external symbol "private: __cdecl ACollectorMan_GameMode::ACollectorMan_GameMode(void)" (??0ACollectorMan_GameMode@@AEAA@XZ) referenced in function "public: static void __cdecl ACollectorMan_GameMode::__DefaultConstructor(class FObjectInitializer const &)" (?__DefaultConstructor@ACollectorMan_GameMode@@SAXAEBVFObjectInitializer@@@Z)
CollectorMan_GameMode.gen.cpp.obj : error LNK2001: unresolved external symbol "private: __cdecl ACollectorMan_GameMode::ACollectorMan_GameMode(void)" (??0ACollectorMan_GameMode@@AEAA@XZ)
Это должна быть проблема компоновщика, однако файл «GameMode.h» доступен в «GameFramework / GameMode.h». Я могу показать вам похожий файл. Но это работает. Вот пример:
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "MyProject2GameMode.generated.h"
UCLASS()
class AMyProject2GameMode : public AGameModeBase
{
GENERATED_BODY()
AMyProject2GameMode();
};
Это все, что я говорю. Заранее спасибо.