2014-09-30 60 views
0

下面是代碼,碼塊指示錯誤就行shwon:錯誤:從類型的右值的類型「的Vector2D&」的非const引用無效初始化「的Vector2D」

bool SoccerTeam::isPassSafeFromOpponent(Vector2D from, 
             Vector2D target, 
             const PlayerBase* const receiver, 
             const PlayerBase* const opp, 
             double  PassingForce)const 
{ 
    Vector2D ToTarget = target - from; 
    Vector2D ToTargetNormalized = Vec2DNormalize(ToTarget); 

    Vector2D LocalPosOpp = PointToLocalSpace(opp->Pos(), 
              ToTargetNormalized, 
              ToTargetNormalized.Perp(), 
              from); // *** ERROR *** 

錯誤消息:

error: invalid initialization of non-const reference of type 'Vector2D&' 
from an rvalue of type 'Vector2D'` 
+3

添加聲明'PointToLocalSpace'所以我們可以發表評論關於參數是否不正確 – EdChum 2014-09-30 08:40:02

+0

在局部變量中存儲'ToTargetNormalized.Perp()',並將'PointToLocalSpace'內的這個表達式替換爲這個變量,可能與'opp-> Pos()'相同 – 2014-09-30 08:42:23

回答

2

問題出在第三個參數,您嘗試傳遞Vector2D :: Perp()函數的返回值作爲參考。 (同樣可以適用於第一個參數要麼,但我想這是一個const的Vector2D &,所以它可能不會哭了。)請嘗試以下操作:

bool SoccerTeam::isPassSafeFromOpponent(Vector2D from, 
             Vector2D target, 
             const PlayerBase* const receiver, 
             const PlayerBase* const opp, 
             double  PassingForce)const 
{ 
    Vector2D ToTarget = target - from; 
    Vector2D ToTargetNormalized = Vec2DNormalize(ToTarget); 
    Vector2D ToTargetNormalizedPerp = ToTargetNormalized.Perp(); 

    Vector2D LocalPosOpp = PointToLocalSpace(opp->Pos(), 
              ToTargetNormalized, 
              ToTargetNormalizedPerp, 
              from); 
+0

已經解決了這個問題,謝謝你的幫助。偉大的社區! – 2014-09-30 08:59:50

相關問題