2013-03-06 127 views
-4

有人可以幫我找出爲什麼'Paycheck combineChecks'函數沒有做任何事嗎?它只是跳過它。當我運行它時,只會在打印出來後結束,並且不會執行任何聯合檢查功能。我很感激。C++跳過一個函數?

+2

是的,[最令人頭疼的解析](http://en.wikipedia.org/wiki/Most_vexing_parse)再次發生。 – 2013-03-06 20:49:01

+2

不只是這樣;即使他只想在'main'中調用'combineChecks',他沒有設置參數。 – Joe 2013-03-06 20:53:02

+0

爲什麼這個問題如此嚴重地下降?很明顯,這是一個很好的特定問題,它提供了格式良好且易於遵循的代碼。 – JBentley 2013-03-06 21:13:27

回答

4
Paycheck combineChecks(Paycheck p1, Paycheck p2); 

...是不是呼叫的功能,而是一個forward declaration

它基本上只是意味着「編譯器,假設某個地方有用這個簽名定義的函數,你可以稍後使用」。

編輯:要真正調用函數,首先你需要兩個工資組合,你可以通過,讓我們叫他們paycheck1paycheck2,然後只是做;

Paycheck combined = combineChecks(paycheck1, paycheck2); 
+0

我需要使用名爲「Paycheck combineChecks(Paycheck p1,Paycheck p2)」的函數。謝謝。 – Patrick 2013-03-06 21:26:50

+0

@ user22507我編輯的哪部分內容告訴你如何調用它不明確? – 2013-03-06 21:34:30

+0

「Paycheck combined = combineChecks(Paycheck p1,Paycheck p2);」我在p1和p2之前得到錯誤'預期的初級表達式。 – Patrick 2013-03-06 21:43:58

2

這不是一個調用:

combineChecks(Paycheck p1, Paycheck p2); 

但是所述函數的重複聲明(它是上述main()已經聲明)。我不知道要改變什麼建議,因爲在程序中只有Paycheck的一個實例,名爲pay,並且該函數需要兩個實例。它還返回一個需要使用的實例Paycheck

+0

嗨hmjd,我需要使用這兩個不同的功能,不知道如何從main調用它並讓它運行。 – Patrick 2013-03-06 21:13:31

+0

@ user22507請參閱Joachim Isaksson的回答(最近編輯)瞭解如何正確調用您的函數。 – JBentley 2013-03-06 21:22:14

3
int main() { 
    // ... 
    Paycheck combineChecks(Paycheck p1, Paycheck p2); 

的代碼有最後一行聲明被叫combineChecks函數,接受Paycheck類型的兩個參數,並通過數值返回另一個Paycheck對象。那就是不是調用的函數。

+0

謝謝大衛,我需要做些什麼來使薪水功能開始? – Patrick 2013-03-06 21:12:27

+0

@ user22507:這已經由Joachim處理。 – 2013-03-06 21:54:03