This might could work??
This commit is contained in:
parent
ddd89a2b6d
commit
3df83a13b4
2 changed files with 9 additions and 6 deletions
|
@ -31,15 +31,15 @@ std::vector<std::shared_ptr<Instance>> Instance::GetChildren() {
|
|||
return this->children;
|
||||
}
|
||||
|
||||
Instance Instance::CloneInternal() {
|
||||
std::unique_ptr<Instance> Instance::CloneInternal() {
|
||||
// TODO: Implement refs
|
||||
|
||||
Instance clone = *this;
|
||||
clone.children = std::vector<std::shared_ptr<Instance>>();
|
||||
clone.children.reserve(this->children.size());
|
||||
std::unique_ptr<Instance> clone = this->copy();
|
||||
clone->children = std::vector<std::shared_ptr<Instance>>();
|
||||
clone->children.reserve(this->children.size());
|
||||
|
||||
for (std::shared_ptr<Instance> child : this->children) {
|
||||
clone.children.push_back(std::make_shared<Instance>(child->CloneInternal()));
|
||||
clone->children.push_back(std::make_shared<Instance>(child->CloneInternal()));
|
||||
}
|
||||
|
||||
return clone;
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#define INSTANCE_COPY_IMPL(CLASS_NAME) std::unique_ptr<Instance> CLASS_NAME::copy() { return std::make_unique<CLASS_NAME>(CLASS_NAME(*this)); }
|
||||
|
||||
// The base class for all objects in the data model
|
||||
class Instance : std::enable_shared_from_this<Instance> {
|
||||
private:
|
||||
|
@ -16,5 +18,6 @@ public:
|
|||
std::vector<std::shared_ptr<Instance>> GetChildren();
|
||||
|
||||
virtual void Init();
|
||||
Instance CloneInternal();
|
||||
std::unique_ptr<Instance> CloneInternal();
|
||||
virtual std::unique_ptr<Instance> copy() const = 0;
|
||||
};
|
Loading…
Add table
Reference in a new issue