summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/item.h2
-rw-r--r--src/post.h7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/item.h b/src/item.h
index 3a9c55bb..e7415918 100644
--- a/src/item.h
+++ b/src/item.h
@@ -132,7 +132,7 @@ public:
TRACE_DTOR(item_t);
}
- void copy_details(const item_t& item)
+ virtual void copy_details(const item_t& item)
{
set_flags(item.flags());
set_state(item.state());
diff --git a/src/post.h b/src/post.h
index 7d93b1cc..aecd65cf 100644
--- a/src/post.h
+++ b/src/post.h
@@ -95,6 +95,7 @@ public:
xdata_(post.xdata_)
{
TRACE_CTOR(post_t, "copy");
+ copy_details(post);
}
virtual ~post_t() {
TRACE_DTOR(post_t);
@@ -141,6 +142,12 @@ public:
std::size_t xact_id() const;
std::size_t account_id() const;
+ virtual void copy_details(const item_t& item) {
+ const post_t& post(dynamic_cast<const post_t&>(item));
+ xdata_ = post.xdata_;
+ item_t::copy_details(item);
+ }
+
bool valid() const;
struct xdata_t : public supports_flags<uint_least16_t>