Skip to content

Commit 0f019f7

Browse files
committed
fixed serielize 多重继承时造成的泄露
1 parent 1921ba4 commit 0f019f7

File tree

6 files changed

+11
-4
lines changed

6 files changed

+11
-4
lines changed

hikyuu_cpp/hikyuu/indicator/Indicator2InImp.h

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ private: \
4747
friend class boost::serialization::access; \
4848
template <class Archive> \
4949
void serialize(Archive& ar, const unsigned int version) { \
50+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(IndicatorImp); \
5051
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(Indicator2InImp); \
5152
}
5253
#else

hikyuu_cpp/hikyuu/trade_sys/portfolio/Portfolio.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111

1212
#include "Portfolio.h"
1313

14+
#if HKU_SUPPORT_SERIALIZATION
15+
BOOST_CLASS_EXPORT(hku::Portfolio)
16+
#endif
17+
1418
namespace hku {
1519

1620
HKU_API std::ostream& operator<<(std::ostream& os, const Portfolio& pf) {

hikyuu_cpp/hikyuu/trade_sys/portfolio/Portfolio.h

-4
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,6 @@ class HKU_API Portfolio : public enable_shared_from_this<Portfolio> {
165165
#endif /* HKU_SUPPORT_SERIALIZATION */
166166
};
167167

168-
#if HKU_SUPPORT_SERIALIZATION
169-
BOOST_SERIALIZATION_ASSUME_ABSTRACT(Portfolio)
170-
#endif
171-
172168
#define PORTFOLIO_IMP(classname) \
173169
public: \
174170
virtual PortfolioPtr _clone() const override { \

hikyuu_cpp/hikyuu/trade_sys/signal/imp/logic/OperatorSignal.h

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ private: \
6060
friend class boost::serialization::access; \
6161
template <class Archive> \
6262
void serialize(Archive& ar, const unsigned int version) { \
63+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(SignalBase); \
6364
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(OperatorSignal); \
6465
}
6566
#else

hikyuu_cpp/hikyuu/trade_sys/signal/imp/logic/OperatorValueSignal.h

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ private: \
5858
friend class boost::serialization::access; \
5959
template <class Archive> \
6060
void serialize(Archive& ar, const unsigned int version) { \
61+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(SignalBase); \
6162
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(OperatorValueSignal); \
6263
}
6364
#else

hikyuu_cpp/hikyuu/trade_sys/system/System.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
#include "hikyuu/global/sysinfo.h"
99
#include "System.h"
1010

11+
#if HKU_SUPPORT_SERIALIZATION
12+
BOOST_CLASS_EXPORT(hku::System)
13+
#endif
14+
1115
namespace hku {
1216

1317
HKU_API std::ostream& operator<<(std::ostream& os, const System& sys) {

0 commit comments

Comments
 (0)