Я проверил пост, похожий на этот, но связь была другой, проблема так и не была решена.Проблема с моим заключается в том, что по какой-то причине компоновщик ожидает, что будет определение базового класса, но базовый класс - это просто интерфейс.Ниже приведена полная ошибка
c:\users\numerical25\desktop\intro todirectx\godfiles\gxrendermanager\gxrendermanager\gxrendermanager\gxdx.h(2) : error C2504: 'GXRenderer' : base class undefined
Ниже приведен код, который показывает, как заголовки связываются друг с другом
GXRenderManager.h
#ifndef GXRM
#define GXRM
#include <windows.h>
#include "GXRenderer.h"
#include "GXDX.h"
#include "GXGL.h"
enum GXDEVICE {
DIRECTX,
OPENGL
};
class GXRenderManager {
public:
static int Ignite(GXDEVICE);
private:
static GXRenderer *renderDevice;
};
#endif
вверхуGxRenderManager, есть заголовки GXRenderer, windows, GXDX, GXGL.Я предполагаю, включив их всех в этот документ.все они ссылаются друг на друга, как если бы они были в одном документе.Поправьте меня, если я ошибаюсь, потому что так выглядят заголовки.Двигаемся дальше ...
GXRenderer.h
class GXRenderer {
public:
virtual void Render() = 0;
virtual void StartUp() = 0;
};
GXGL.h
class GXGL: public GXRenderer {
public:
void Render();
void StartUp();
};
GXDX.h
class GXDX: public GXRenderer {
public:
void Render();
void StartUp();
};
GXGL.cppи GXDX.cpp соответственно
#include "GXGL.h"
void GXGL::Render()
{
}
void GXGL::StartUp()
{
}
//...Next document
#include "GXDX.h"
void GXDX::Render()
{
}
void GXDX::StartUp()
{
}
Не уверен, что происходит.Я думаю, это то, как я связываю документы, я не уверен.