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;
|
return this->children;
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance Instance::CloneInternal() {
|
std::unique_ptr<Instance> Instance::CloneInternal() {
|
||||||
// TODO: Implement refs
|
// TODO: Implement refs
|
||||||
|
|
||||||
Instance clone = *this;
|
std::unique_ptr<Instance> clone = this->copy();
|
||||||
clone.children = std::vector<std::shared_ptr<Instance>>();
|
clone->children = std::vector<std::shared_ptr<Instance>>();
|
||||||
clone.children.reserve(this->children.size());
|
clone->children.reserve(this->children.size());
|
||||||
|
|
||||||
for (std::shared_ptr<Instance> child : this->children) {
|
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;
|
return clone;
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#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
|
// The base class for all objects in the data model
|
||||||
class Instance : std::enable_shared_from_this<Instance> {
|
class Instance : std::enable_shared_from_this<Instance> {
|
||||||
private:
|
private:
|
||||||
|
@ -16,5 +18,6 @@ public:
|
||||||
std::vector<std::shared_ptr<Instance>> GetChildren();
|
std::vector<std::shared_ptr<Instance>> GetChildren();
|
||||||
|
|
||||||
virtual void Init();
|
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