-
-
Notifications
You must be signed in to change notification settings - Fork 595
Open
Description
I am having trouble getting tables to recognize that different STL shared pointers to the same object are the same object:
-- This will not remove the key
self.manager.zombies[self] = nil
-- This will remove the key
for k, v in pairs(self.manager.zombies) do
if k == self then
self.manager.zombies[k] = nil
end
endI tried declaring all of these meta functions in the class definition, but to no avail:
sol::meta_function::equal_to, sol::overload(
[](Model& self, Model* other) { return &self == other; },
[](Model& self, Entity* other) { return &self == other; },
[](Model& self, Object* other) { return &self == other; }
),
sol::meta_function::equal_to, sol::overload(
[](Model& self, shared_ptr<Model> other) { return &self == other.get(); },
[](Model& self, shared_ptr<Entity> other) { return &self == other.get(); },
[](Model& self, shared_ptr<Object> other) { return &self == other.get(); }
),
sol::meta_function::less_than, sol::overload(
[](Model& self, Model* other) { return &self < other; },
[](Model& self, Entity* other) { return &self < other; },
[](Model& self, Object* other) { return &self < other; }
),
sol::meta_function::less_than, sol::overload(
[](Model& self, shared_ptr<Model> other) { return &self < other.get(); },
[](Model& self, shared_ptr<Entity> other) { return &self < other.get(); },
[](Model& self, shared_ptr<Object> other) { return &self < other.get(); }
),
sol::meta_function::less_than_or_equal_to, sol::overload(
[](Model& self, Model* other) { return &self <= other; },
[](Model& self, Entity* other) { return &self <= other; },
[](Model& self, Object* other) { return &self <= other; }
),
sol::meta_function::less_than_or_equal_to, sol::overload(
[](Model& self, shared_ptr<Model> other) { return &self <= other.get(); },
[](Model& self, shared_ptr<Entity> other) { return &self <= other.get(); },
[](Model& self, shared_ptr<Object> other) { return &self <= other.get(); }
),Any advice on how to get the table compare to recognize that two different shared pointers to the same object are the same?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels