簡體   English   中英

帶有'('的奇怪C ++語法錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM