2016-11-21 101 views
0

我知道這個問題之前已經被問過了,我已經嘗試過發佈的解決方案,但由於某種原因,我仍然無法解決我面臨的問題。沒有構造函數的實例匹配參數列表

我想創建一個派生類的對象。不過,我得到一個錯誤信息說:

Error: no instance of constructor "CALibrary::YieldCurve::YieldCurve" 
matches te argument list argument types are: (std::string, 
std::vector<std::pair<double,double>,double>) 

的父類是:

namespace CALibrary { 
    class YieldCurveIF { 
    public: 
    virtual double getDiscountFactor(double fromDate, double toDate) = 0; 
     int getSize() { 
     return _curve.size(); 
     } 
     std::vector<std::pair<double, double>> getCurve() { 
     return _curve; 
     } 

     void setParameters(std::string curveName, 
         std::vector<std::pair<double, double>>& curve) 
     { 
     _curveName = curveName; 
     _curve = curve; 
     } 
    protected: 
    std::string       _curveName; 
    std::vector<std::pair<double, double>> _curve; 
    }; 
} 

派生類是:

namespace CALibrary { 
    class YieldCurve : public CALibrary::YieldCurveIF 
    { 
    public: 
    YieldCurve(std::string curveName, 
       std::vector<std::pair<double, double>>& curve) 
    {   
     setParameters(curveName, curve); 
    } 
    double getDiscountFactor(double fromDate, double toDate); 
    private: 
    }; 
} 

這裏是代碼我在哪裏試圖創建YieldCurve的一個對象是:

int nPayments = 4; 
std::string curveName = "EURCurve"; 
std::vector<std::pair<double, double>, double> yCurve(nPayments); 
CALibrary::YieldCurve _yieldCurve(curveName, yCurve); 
+0

錯誤發生在行「CALibrary :: YieldCurve _yieldCurve(curveName,yCurve);」特別是變量「curveName」。 – Ace

+0

你有沒有嘗試修復'yCurve'類型(最後一段代碼的第3行)?第三個「雙」不應該存在。 – kennytm

回答

0

yCurve具有無義類型

std::vector<std::pair<double, double>, double> 

除去,double末。

此外,您的代碼需要std::vector<std::pair<double, double>>&時它應該在兩個地方std::vector<std::pair<double, double>> const&

+0

感謝您的及時回覆 – Ace

+0

對不起Yakk我不知道何時使用「const」。你能解釋爲什麼我的代碼應該在兩個地方使用「std :: vector > const&」嗎?謝謝 – Ace

+0

@Ace你在修改什麼嗎?如果你不直接或間接地修改某些東西,你應該用'const'而不是'&'來代替它。 'setParameters'是否修改它傳遞的'vector'? – Yakk

相關問題