C *operator -> ();
const C *operator -> () const;
+ C &operator * ();
+ const C &operator * () const;
+
C *get();
const C *get() const;
return manager_->template get_component_ptr<C>(id_);
}
+template <typename C, typename EM>
+inline C &ComponentHandle<C, EM>::operator * () {
+ assert(valid());
+ return *manager_->template get_component_ptr<C>(id_);
+}
+
+template <typename C, typename EM>
+inline const C &ComponentHandle<C, EM>::operator * () const {
+ assert(valid());
+ return *manager_->template get_component_ptr<C>(id_);
+}
+
template <typename C, typename EM>
inline C *ComponentHandle<C, EM>::get() {
assert(valid());
});
REQUIRE(count == 1);
}
+
+TEST_CASE_METHOD(EntityManagerFixture, "TestComponentDereference") {
+ Entity a = em.create();
+ a.assign<Position>(10, 5);
+ auto& positionRef = *a.component<Position>();
+ REQUIRE(positionRef.x == 10);
+ REQUIRE(positionRef.y == 5);
+ positionRef.y = 20;
+ REQUIRE(a.component<Position>()->y == 20);
+}