Обратите внимание, что циклическое включение, например, как у вас Required.h
и ValveInterfaces.h
, обычно является запахом кода. Если вы нарушите круговую ссылку, проблемы, подобные этим, будут возникать с меньшей вероятностью.
То, что вы можете попробовать и сделать, - это объявить вперед как можно больше в ValveInterfaces.h
и оставить его автономным. Не похоже, что ValveInterfaces требует всего от Requ.h, так что не включайте его.
#ifndef VALVEINTERFACES_H
#define VALVEINTERFACES_H
// CreateInterfaceFn probably need to be fully defined
// so just pull whatever header has that. Don't include
// Required.h here, there's no need for it.
class IBaseClientDLL;
class IVEngineClient;
class ValveInterfaces
{
public:
ValveInterfaces();
~ValveInterfaces();
static CreateInterfaceFn CaptureFactory(char *pszFactoryModule);
static void* CaptureInterface(CreateInterfaceFn fn, char * pszInterfaceName);
//globals
IBaseClientDLL* gClient;
IVEngineClient* gEngine;
};
#endif