2016-11-21 102 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

相关问题