diff -r 6de5ac1fb471 -r 3a9e761e4faa src/model.h --- a/src/model.h Sun Jan 19 14:25:57 2020 +0200 +++ b/src/model.h Wed Jan 22 00:23:29 2020 +0200 @@ -50,10 +50,10 @@ private: using ModelObjectPointer = std::unique_ptr; template - T* append(Args&&... args); + linetypes::Id append(Args&&... args); void append(ModelObjectPointer&& object); template - T* insert(int position, Args&&... args); + linetypes::Id insert(int position, Args&&... args); bool modified = false; QString path; LDHeader header; @@ -64,25 +64,25 @@ }; template -T* Model::append(Args&&... args) +linetypes::Id Model::append(Args&&... args) { emit layoutAboutToBeChanged(); this->body.push_back(std::make_unique(args...)); - T* pointer = static_cast(this->body.back().get()); + linetypes::Object* pointer = this->body.back().get(); this->objectsById[pointer->id] = pointer; emit objectAdded(pointer->id, this->body.size() - 1); emit layoutChanged(); - return pointer; + return pointer->id; } template -T* Model::insert(int position, Args&&... args) +linetypes::Id Model::insert(int position, Args&&... args) { emit layoutAboutToBeChanged(); this->body.insert(position, std::make_unique(args...)); - T* pointer = static_cast(this->body[position]); + linetypes::Object* pointer = this->body[position].get(); this->objectsById[pointer->id] = pointer; emit objectAdded(pointer->id, position); emit layoutChanged(); - return pointer; + return pointer->id; }