我有一个main类,我喜欢将它的指针引用传递给我创建的对象的on,但是它给了我错误:
错误1错误C2664:“GameController::GameController(GameLayer*&)”:无法将参数1从“GameLayer *const”转换为“GameLayer*&”
我在GameLayer中拥有的内容(主要对象)
m_pGameController = new GameController(this);在GameController中,我有一个构造函数
GameController(GameLayer*& GameLayer)
{
setGameLayer(gameLayer); // to GameLayer memeber )
}首先,我需要能够从GameLayer (图形用户界面)中修改GameController中的数据。
发布于 2013-09-01 09:40:02
首先,this的类型可以是GameLayer * const或const GameLayer * const,这取决于成员函数是否为const。但是,它是一个const指针。
尽管如此,对指针type *&ref的引用意味着您将修改指针,即它所指向的对象。
“既然,这个指针是一个常量指针,您不能将它分配给非const指针(GameLayer* p)”,在引用的上下文中。
如果引用指针,则不能将引用分配给将修改this中的值的引用。不能将其分配给对non-const指针(GameLayer *&p))的引用,但可以将引用分配给const指针(即GameLayer *const &p )。
因此,将构造函数更改为GameController(GameLayer * const & gameLayer)应该有效。
但我现在看不出有什么用。
如果从const成员函数调用,那么this具有const *const类型,因此必须将其更改为GameController(const GameLayer * const & gameLayer)。
发布于 2013-09-01 09:05:14
我不知道你为什么要使用*&,但如果你这么做的话,效果会很好的:
GameController(GameLayer* GameLayer)
{
setGameLayer(gameLayer); // to GameLayer memeber )
}发布于 2013-09-01 09:10:23
“这”是一个指针常量,因此您可以将其作为引用或const引用传递。
m_pGameController = new GameController(*this);
GameController(GameLayer& GameLayer) {}https://stackoverflow.com/questions/18556866
复制相似问题