我的代码遇到一个奇怪的问题(或者我有点生疏了):以下代码:

#include <iostream>
#include <vector>

using namespace std;

typedef vector<double> vDouble;
typedef vector<int> vInt;

//Class for calculations
class CallCosts
{
    CallCosts::CallCosts();
    CallCosts::CallCosts(vDouble nrates(4, 0)); //Constructor

    void CallCosts::setRates(vDouble sr(4, 0));
    void CallCosts::getTotals(vDouble gt(4, 0), vInt minutes(4, 0));

    vDouble rates(4, 0);
    vDouble totals(4, 0);

};


编译器在第16行给我一个错误:

CallCosts::CallCosts(vDouble nrates(4, 0)); //Constructor


错误是:在(()标记之前应为','或'...'。

现在我可以确定我没有错过;在任何地方,那么还有什么可能导致这种情况?另一个注意事项:我之前使用的是普通变量而不是typedef,并且代码可以正常工作,所以这可能是问题所在,但除此之外,我不确定吗?

提前致谢。

最佳答案

在类声明中删除CallCosts::

另外,该CallCosts::CallCosts(vDouble nrates(4, 0));应该是什么意思?

如果要使用参数类型为vDouble的构造函数,请使用CallCosts(vDouble nrates)
如果要指定默认值,请执行此CallCosts(vDouble nrates= vDouble(4, 0));并删除默认构造函数。

10-02 04:46