【发布时间】:2015-12-24 01:16:01
【问题描述】:
我有这门课:
#pragma once
#include <thread>
#include "Game.h"
class CPhysics {
CGame *mGame;
//[...]
public:
CPhysics(CGame *game);
//[...]
};
我将CGame 实例传递给CPhysics 的构造函数,如下所示:
#include "Game.h"
CGame::CGame() {
//[...]
mPhysics = new CPhysics(this);
}
但是编译器不知道该怎么做,给了我<error-type> *game 而不是CGame *game。我想传递一个指向 CGame 实例的指针。如果我删除星号会发送什么?我有点困惑。
编辑: 实际错误如下:它想使用CPhysics(CPhysics &&) 而不是CPhysics(CGame *game) 构造函数。但CGame *const 不能也不应转换为const CPhysics &。我猜这是由于错误类型造成的。
【问题讨论】:
-
编译时的实际错误是什么。我也怀疑你有一个循环依赖循环。
-
此文本来自您的 IDE,而不是您的编译器
-
Game.h是否包含Physics.h?我猜CGame[尚未] 声明。您可能想要使用前向声明(或打破循环依赖)。 -
“我通过了 CGame 实例” 不,不,你没有!
-
我添加了一些关于实际错误的信息。 @DietmarKühl 是的,
Game.h包括Physics.h,反之亦然。