因此,我基本上有以下代码。我有工作代码,想将其中的一些分成两个不同的类,D3DWindowD3DController,而不是全部包含在D3DWindow中。我不认为这是一个问题,因为它在分离之前就已经起作用了。该问题发生在D3DController.cpp中。它说了类似D3DController::Create(D3DWindow*) does not match type D3DController::Create(<error-type>*)的内容所有文件都在VS2010中,并且都包含在同一项目中。作为我的问题,没有什么立即脱颖而出的。

stdafx.h

#include <d3d10.h>
#include <windows.h>
#include "D3DWindow.h"
#include "D3DController.h"

stdafx.cpp
#include "stdafx.h"

D3DWindow.h
#include "D3DController.h"
class D3DWindow{
    D3DController controller;
    public bool init();
};

D3DWindow.cpp
#include "stdafx.h"
bool D3DWindow::init(){
    if(!controller.create(this))
        return false;
    return true;
}

D3DController.h
#include "D3DWindow.h"
class D3DController{
    public bool Create(D3DWindow* window);
};

D3DController.cpp
#include "stdafx.h"
bool D3DController::Create(D3DWindow* window){
    // Do Stuff
    return true;
}

最佳答案

您具有循环依赖关系。也许您可以使用类转发声明代替#include。例如。:

// #include "D3DWindow.h"

class D3DWindow; // forward declaration

class D3DController{
    public bool Create(D3DWindow* window);
};

关于c++ - C++ header 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3873531/

10-14 07:00