나는 내가 만드는 객체에 대한 포인터 참조를 전달하는 것을 좋아하는 메인 클래스가 있지만 오류가 발생합니다.
오류 1 오류 C2664 : 'GameController :: GameController (GameLayer * &)': 매개 변수 1을 'GameLayer * const'에서 'GameLayer * &'로 변환 할 수 없습니다.
내가 GameLayer에있는 것 (주요 개체)
m_pGameController = new GameController(this);
GameController에는이 생성자가 있습니다.
GameController(GameLayer*& GameLayer)
{
setGameLayer(gameLayer); // to GameLayer memeber )
}
해결책은 GameController (GUI 물건)에서 GameLayer의 데이터를 수정할 수 있어야한다는 것입니다.
첫째, 유형은 멤버 함수가 있는지 여부에 따라 또는 일 this
수 있습니다 . 그러나 그것은 포인터입니다.GameLayer * const
const GameLayer * const
const
const
즉, 포인터에 대한 참조는 포인터 type *&ref
가 가리키는 개체 인 포인터를 수정할 것임을 나타냅니다.
"이 포인터는 상수 포인터 이므로 참조 컨텍스트 에서 상수가 아닌 포인터 (GameLayer * p)에 할당 할 수 없습니다 ."
포인터에 대한 참조의 경우에서 값을 수정할 참조에 할당 할 수 없습니다 this
. 당신은에 대한 참조로 할당 할 수 없습니다 non-const
포인터 ( GameLayer *&p)
,하지만 당신은에 대한 참조를 할당 할 수 있습니다 const
포인터 즉 GameLayer *const &p
.
따라서 생성자를로 변경하면 GameController(GameLayer * const & gameLayer)
작동합니다.
그러나 나는 현재 여기서 그것을 사용하지 않는다.
그리고 const
멤버 함수 에서 호출하는 this
경우 유형이 const *const
있으므로 GameController(const GameLayer * const & gameLayer)
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다