首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++如何将“this”传递给指针引用

C++如何将“this”传递给指针引用
EN

Stack Overflow用户
提问于 2013-09-01 09:02:08
回答 4查看 14.5K关注 0票数 5

我有一个main类,我喜欢将它的指针引用传递给我创建的对象的on,但是它给了我错误:

错误1错误C2664:“GameController::GameController(GameLayer*&)”:无法将参数1从“GameLayer *const”转换为“GameLayer*&”

我在GameLayer中拥有的内容(主要对象)

代码语言:javascript
复制
m_pGameController = new GameController(this);

在GameController中,我有一个构造函数

代码语言:javascript
复制
GameController(GameLayer*& GameLayer)
{
 setGameLayer(gameLayer); // to GameLayer memeber ) 
}

首先,我需要能够从GameLayer (图形用户界面)中修改GameController中的数据。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-01 09:40:02

首先,this的类型可以是GameLayer * constconst 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)

票数 6
EN

Stack Overflow用户

发布于 2013-09-01 09:05:14

我不知道你为什么要使用*&,但如果你这么做的话,效果会很好的:

代码语言:javascript
复制
GameController(GameLayer* GameLayer)
{
 setGameLayer(gameLayer); // to GameLayer memeber ) 
}
票数 5
EN

Stack Overflow用户

发布于 2013-09-01 09:10:23

“这”是一个指针常量,因此您可以将其作为引用或const引用传递。

代码语言:javascript
复制
 m_pGameController = new GameController(*this);

 GameController(GameLayer& GameLayer) {}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18556866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档