[英]Strange C++ syntax error with '('
我的代碼遇到一個奇怪的問題(或者我有點生疏了):以下代碼:
#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(vDouble nrates(4, 0));
它看起來應該像這樣:
CallCosts(const vDouble& nrates);
您通過const引用傳遞向量。
定義應如下所示:
CallCosts::CallCosts(const vDouble& nrates) : rates(nrates) {}
在這里,您使用初始化程序列表來初始化您的私有變量,並將其作為參數傳遞給構造函數。
在類聲明中刪除CallCosts::
。
另外,這是什么CallCosts::CallCosts(vDouble nrates(4, 0));
應該是什么意思?
如果要使用參數類型為vDouble
的構造vDouble
,請使用CallCosts(vDouble nrates)
。 如果要指定默認值,請執行此CallCosts(vDouble nrates= vDouble(4, 0));
並刪除默認構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.