Hello,
I am a starter of using QuantLib. I'm currently following the tutorial as shown in http://cogitolearning.co.uk/?p=332 The code I wrote in enclosed in attachment.main.cpp If I follow exactly as what's shown in the tutorial, I got an error when compiling: Then I figured out that there might be a typo in the tutorial, so I changed cashFlows[i].accept(addCashFlowVisitor); to cashFlows[i]->accept(addCashFlowVisitor); However, I still got an error when trying to compile: I'm wondering how to fix it? Thanks |
Hi, I think the problem lies with the line: cashFlows.emplace_back(SimpleCashFlow(2.0, d1));
ziegele <[hidden email]> schrieb am 22:55 Dienstag, 24.Januar 2017: Hello, I am a starter of using QuantLib. I'm currently following the tutorial as shown in http://cogitolearning.co.uk/?p=332 <http://http://cogitolearning.co.uk/?p=332> The code I wrote in enclosed in attachment. main.cpp <http://quantlib.10058.n7.nabble.com/file/n17991/main.cpp> If I follow exactly as what's shown in the tutorial, I got an error when compiling: <http://quantlib.10058.n7.nabble.com/file/n17991/error1.jpg> Then I figured out that there might be a typo in the tutorial, so I changed cashFlows[i].accept(addCashFlowVisitor); to cashFlows[i]->accept(addCashFlowVisitor); However, I still got an error when trying to compile: <http://quantlib.10058.n7.nabble.com/file/n17991/error2.jpg> I'm wondering how to fix it? Thanks -- View this message in context: http://quantlib.10058.n7.nabble.com/Error-in-compiling-of-QuantLib-examples-tp17991.html Sent from the quantlib-users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
Thanks Yannis! It indeed fixes this error.
However, if I try to assign different types of inputs into the cashFlows vector: I got SimpleCashFlow and Redemption calculated correctly, but AmortizingPayment didn't calculate: Do you know why? Complete source code is also attached. main.cpp Thanks. |
You 're welcome! Add the following code defining the default constructor inside the AddCashFlowAmounts class: AddCashFlowAmounts() : cashFlowSum(0), simpleCashFlowSum(0), redemptionSum(0), amortizingPaymentSum(0) {} This should initialize the variables to 0 when you call AddCashFlowAmounts addCashFlowsVisitor; inside the calcCashFlowSums function. Regards. Ioannis ziegele <[hidden email]> schrieb am 16:11 Mittwoch, 25.Januar 2017: Thanks Yannis! It indeed fixes this error. However, if I try to assign different types of inputs into the cashFlows vector: <http://quantlib.10058.n7.nabble.com/file/n17994/input.jpg> I got SimpleCashFlow and Redemption calculated correctly, but AmortizingPayment didn't calculate: <http://quantlib.10058.n7.nabble.com/file/n17994/output.jpg> Do you know why? Complete source code is also attached. main.cpp <http://quantlib.10058.n7.nabble.com/file/n17994/main.cpp> Thanks. -- View this message in context: http://quantlib.10058.n7.nabble.com/Error-in-compiling-of-QuantLib-examples-tp17991p17994.html Sent from the quantlib-users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
Thanks Yannis!
1 last question: is there a way to emplace_back a CashFlow shared_ptr? It shows that it's purely virtual, which only serves as an interface: Is there anyway of generating a non-zero report for "all other cash flows" part? Thanks, ziegele |
You 're welcome Ziegele, 1) No, because CashFlow is abstract and emplace_back relies on the existence of a constructor. 2) I am not familiar with the visitor pattern, but I suspect you could achieve this by removing all the visit overloads except the void visit( CashFlow & c ) one. Then you modify the code inside as follows: void visit( CashFlow & c ) { cashFlowSum += p->amount(); if( SimpleCashFlow * p = dynamic_cast<CashFlow *>(
&c ) ) { simpleCashFlowSum += p->amount(); } else if( Redemption * p = dynamic_cast<Redemption *>(
&c ) ) { redemptionSum += p->amount(); } else if( AmortizingPayment * p = dynamic_cast<AmortizingPayment
*>( &c ) ) { amortizingPaymentSum += p->amount(); } }
Let me know if this works Cheers Yannis On 26.01.2017 20:42, ziegele wrote:
Thanks Yannis! 1 last question: is there a way to emplace_back a CashFlow shared_ptr? It shows that it's purely virtual, which only serves as an interface: <http://quantlib.10058.n7.nabble.com/file/n18024/cashFlow.jpg> Is there anyway of generating a non-zero report for "all other cash flows" part? <http://quantlib.10058.n7.nabble.com/file/n18024/output.jpg> Thanks, ziegele -- View this message in context: http://quantlib.10058.n7.nabble.com/Error-in-compiling-of-QuantLib-examples-tp17991p18024.html Sent from the quantlib-users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
Your visitor should work as you've written it. Try adding some other kind of cash flow, such as FixedRateCoupon. Luigi On Thu, Jan 26, 2017 at 10:55 PM Ioannis Rigopoulos <[hidden email]> wrote:
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ QuantLib-users mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/quantlib-users |
Free forum by Nabble | Edit this page |