diff --git a/src/wallet/MoneroWalletModel.cpp b/src/wallet/MoneroWalletModel.cpp index 23556e3..1cb4857 100644 --- a/src/wallet/MoneroWalletModel.cpp +++ b/src/wallet/MoneroWalletModel.cpp @@ -258,6 +258,10 @@ namespace monero { throw runtime_error("MoneroTransfer deep copy constructor not implemented"); } + shared_ptr MoneroTransfer::copy() const { + throw runtime_error("Subclass must implement"); + } + boost::property_tree::ptree MoneroTransfer::toPropertyTree() const { boost::property_tree::ptree node; if (amount != boost::none) node.put("amount", *amount); @@ -300,7 +304,7 @@ namespace monero { throw runtime_error("MoneroIncomingTransfer deepy copy not implemented"); } - shared_ptr MoneroIncomingTransfer::copy() const { + shared_ptr MoneroIncomingTransfer::copy() const { return make_shared(*this); } @@ -334,7 +338,7 @@ namespace monero { throw runtime_error("MoneroOutgoingTransfer deep copy not implemented"); } - shared_ptr MoneroOutgoingTransfer::copy() const { + shared_ptr MoneroOutgoingTransfer::copy() const { return make_shared(*this); } @@ -370,7 +374,7 @@ namespace monero { throw runtime_error("MoneroTransferRequet deep copy not implemented"); } - shared_ptr MoneroTransferRequest::copy() const { + shared_ptr MoneroTransferRequest::copy() const { return make_shared(*this); } diff --git a/src/wallet/MoneroWalletModel.h b/src/wallet/MoneroWalletModel.h index 01b569b..9943cd9 100644 --- a/src/wallet/MoneroWalletModel.h +++ b/src/wallet/MoneroWalletModel.h @@ -148,9 +148,9 @@ namespace monero { boost::optional numSuggestedConfirmations; MoneroTransfer(); - MoneroTransfer(const MoneroTransfer& transfer); // deep copy constructor - virtual shared_ptr copy() const = 0; // derived class must implement + MoneroTransfer(const MoneroTransfer& transfer); // deep copy constructor virtual boost::optional getIsIncoming() const = 0; // derived class must implement + shared_ptr copy() const; // not virtual in order for subclasses to return shared_ptr of derived types boost::optional getIsOutgoing() const { if (getIsIncoming() == boost::none) return boost::none; return !(*getIsIncoming()); @@ -168,7 +168,7 @@ namespace monero { MoneroIncomingTransfer(); MoneroIncomingTransfer(const MoneroIncomingTransfer& transfer); // deep copy constructor - shared_ptr copy() const; + shared_ptr copy() const; boost::optional getIsIncoming() const; boost::property_tree::ptree toPropertyTree() const; void merge(const shared_ptr& self, const shared_ptr& other); @@ -185,7 +185,7 @@ namespace monero { MoneroOutgoingTransfer(); MoneroOutgoingTransfer(const MoneroOutgoingTransfer& transfer); - shared_ptr copy() const; + shared_ptr copy() const; boost::optional getIsIncoming() const; boost::property_tree::ptree toPropertyTree() const; void merge(const shared_ptr& self, const shared_ptr& other); @@ -209,7 +209,7 @@ namespace monero { MoneroTransferRequest(); MoneroTransferRequest(const MoneroTransferRequest& request); - shared_ptr copy() const; + shared_ptr copy() const; boost::optional getIsIncoming() const; boost::property_tree::ptree toPropertyTree() const; bool meetsCriteria(MoneroTransfer* transfer) const;