重构我的代码.我的标题(Header Guard问题)

num*_*l25 0 c c++ visual-studio-2008 visual-studio visual-c++

基于我得到的错误,我有一篇类似于此前的帖子.我能够解决它,但从那时起我一直在做事情,因为标头阻止其他标头使用代码.老实说,这些标题让我很困惑,如果有人有任何资源可以解决这些类型的问题,那将会有所帮助.

我基本上想要做的是能够将rModel.h包含在RenderEngine.h中.每次我将rModel.h添加到RenderEngine.h时,rModel.h都不再能够使用RenderEngine.h.(rModel.h也有一个#include of RenderEngine.h).

简而言之,RenderEngine和rModel需要使用彼此的功能.除了所有这些混乱之外,Main.cpp还需要使用RenderEngine.

stdafx.h中

#include "targetver.h"

#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>

// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include "resource.h"
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include "stdafx.h"
#include "RenderEngine.h"
#include "rModel.h"

// Global Variables:

RenderEngine go;

rModel *g_pModel;

...code...........
Run Code Online (Sandbox Code Playgroud)

rModel.h

#ifndef _MODEL_H
#define _MODEL_H
#include "stdafx.h"
#include <vector>
#include <string>
#include "rTri.h"
#include "RenderEngine.h"

........Code
Run Code Online (Sandbox Code Playgroud)

RenderEngine.h

#pragma once
#include "stdafx.h"
#include "d3d10.h"
#include "d3dx10.h"
#include "dinput.h"
#include "rModel.h"

.......Code......
Run Code Online (Sandbox Code Playgroud)

Cos*_*ert 5

正如我在之前关于这个问题的回答中写的那样,google关于Forward declarationC++.这可能会解决您的问题,但是,循环标头依赖性再次表明应用程序设计不佳.