2014-09-26 84 views
-7

,我發現了錯誤「這一術語不計算爲服用1個參數的函數」在我的下面這行代碼的函數:C++錯誤:術語不計算爲服用1個參數

steerToSpiralRefPoint(m_CentrePos); 

但我不確定這是爲什麼......這個函數是否只需要一個參數作爲參數,但是由於'm_centrePos'變量包含多於一個屬性,函數有效地接收了幾個參數?

我已經定義「steerToSpiralRefPoint」與線:

CDirectOverflyItem steerToSpiralRefPoint = new CDirectOverflyItem::SteerStep(const CHeloData aHeloData); 

已在此文件的開始被分配值「cCentrePos」「m_CentrePos」(「cCentrePos」是類型「CCoordinate」的可變,它有許多屬性 - 緯度,經度,高度等)。

「CDirectOverflyItem也有一些屬性 - 地面速度,風速,風向角等

任何人都可以指出我爲什麼我得到這個錯誤,我怎麼應該糾正呢?

+3

「CDirectOverflyItem」的類定義是什麼? – ecatmur 2014-09-26 09:48:14

+0

'CDirectOverflyItem :: SteerStep'是否提供一個帶有一個參數的重載函數調用操作符:'operator()(CCoordinate x)'? – 2014-09-26 10:01:59

+0

'CDirectOverflyItem'的類定義是:'class CDirectOverflyItem:public CSimpleSteeringItem' – someone2088 2014-09-26 10:29:18

回答

0

看來問題是我試圖將錯誤的數據類型傳遞給參數 - 它期待着一個'CHeloData',但我試圖給它一個'CCoordinate'。

1

該表達

steerToSpiralRefPoint(m_CentrePos); 

是一個函數調用的一個後綴表達式。但是,從您的帖子steerToSpiralRefPoint不是一個函數(或函數指針),而是一個指向對象的指針。如果你想分配一個值的指針,那麼你必須寫

steerToSpiralRefPoint = m_CentrePos; 

或者,如果有這種類型的操作函數,則代碼應該看起來

(*steerToSpiralRefPoint)(m_CentrePos); 

而且這種結構

CDirectOverflyItem steerToSpiralRefPoint = new CDirectOverflyItem::SteerStep(const CHeloData); 

也是無效的。您不能在表達式中的變量之前使用限定符。它們只能用於聲明。