2013-03-06 129 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