2016-11-21 35 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行目)の型を修正しようとしましたか?第3の「ダブル」は存在してはならない。 – kennytm

答えて

0

yCurveナンセンスタイプ

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

、最後に,doubleを削除しました。

さらに、std::vector<std::pair<double, double>> const&を2か所で取得する必要がある場合は、コードにはstd::vector<std::pair<double, double>>&が必要です。

+0

すぐにお返事ありがとう – Ace

+0

申し訳ありませんが、私は "const"をいつ使用するのかよく知っていません。私のコードが "std :: vector > const&"を2つの場所で取るべき理由を説明してください。ありがとう – Ace

+0

@Aceあなたは何かを変更していますか?何かを直接的または間接的に変更しない場合は、 '&'でなく 'const 'で取るべきです。 'setParameters'は渡される' vector'を修正しますか? – Yakk

関連する問題