2011-03-22 91 views
0

這段代碼的問題,我採取上述錯誤?錯誤:在'。'之前預期的初級表達式令牌

TIA

#include"PositionInfo.h" 

bool DecisionTree::Decision(Agent & agent) { 

PositionInfo Player_position; 
double metr=Player_position.GetBallDistToTeammate(5); 

if (agent.GetSelf().IsKickable()) { 

Kicker::instance().KickBall(agent,agent.GetWorldState().GetTeammate(5).GetPos(),metr); 

} 
} 

我現在改變了代碼,我得到這個錯誤:

錯誤:調用沒有匹配的函數 'PositionInfo :: PositionInfo()'

編輯:

根據johnsyweb迴應:

class Positi onInfo我們有這樣的:

PositionInfo(WorldState *pWorldState, InfoState *pInfoState); 

我把它像這樣在DecisionTree:

PositionInfo Player_position(WorldState *pWorldState, InfoState *pInfoState); 

    double met=Player_position//but here IDE doesnt let me to put GetBallDistToTeammate() 
+0

您需要*閱讀''PositionInfo.h''中的代碼*以找出PositionInfo的構造函數的參數並提供這些參數,按照我的答案。 – Johnsyweb 2011-03-22 10:54:08

+0

'PositionInfo Player_position(WorldState * pWorldState,InfoState * pInfoState);'是不正確的語法。你需要在這裏傳遞指向有效對象的指針(假設'PositionInfo Player_position(NULL,NULL);'將不會產生任何有用的結果 – Johnsyweb 2011-03-22 11:42:44

回答

1

PositionInfo是一類。 GetBallDistToTeammate()是一種方法。

鑑於函數名稱和參數個數(一),我建議static方法將無法計算與該信息的距離。

因此你需要大概構造的PositionInfo(我們稱之爲player_position)的實例作爲DecisionTree的一員,想必呼籲它的一些其他方法來設置其位置(從您的編輯,其位置設置在的構造函數中PositionInfo::PositionInfo(),其中至少有一個參數)。

然後在DecisionTree::Decision(),你可以打電話player_position.GetBallDistToTeammate(5),並得到一些米。

+0

謝謝,但我不明白你在這句話中的含義:調用其他一些方法設置其position.i編輯我的問題,PLZ看是否正確或缺少其他 – Arash 2011-03-22 10:09:32

+0

@arash:我已經更新了我的答案。你需要找出'PositionInfo :: PositionInfo()'的參數是什麼,並構造'PositionInfo Player_position('* <這裏的正確參數> *')'。 – Johnsyweb 2011-03-22 10:22:02

+0

我編輯了我的問題,請檢查,謝謝 – Arash 2011-03-22 11:16:49

2

是因爲它應該是PositionInfo::GetBallDistToTeammate(5)?我認爲這是一個靜態函數。 .用於C++中的Java/C#和::以訪問靜態成員。

在回答您的問題編輯

看起來PositionInfo::GetBallDistToTeamMate不是一個靜態成員函數。您需要一個位置信息實例(例如該類型的變量)來調用該方法。它看起來不像你在函數中有一個,所以也許有一個作爲DecisionTree的成員?沒有更多信息很難說。

4

類名不是主表達式。您應該創建一個類型爲PositionInfo的對象,並使用該對象調用GetBallDistToTeammate或使用PositionInfo::

相關問題