From a645ba57588a1154ba54e1627c787a12fa42ae62 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Sat, 26 Nov 2011 23:52:31 +0100 Subject: [PATCH] agent::conn: Change to pointer, delete in ~agent() --- agent.cc | 8 +++++++- agent.h | 9 +++------ main.cc | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/agent.cc b/agent.cc index f82065c..ea984fc 100644 --- a/agent.cc +++ b/agent.cc @@ -37,5 +37,11 @@ agent::on_tick(void) tile->tile_in_dir(0, 1).symbol(), tile->tile_in_dir(-1, 0).symbol(), }; - conn.senses(tick_id, around); + conn->senses(tick_id, around); } + +agent::~agent() +{ + tile->on_agent_leave(*this); + delete conn; +}; diff --git a/agent.h b/agent.h index 4a5d326..7181c0f 100644 --- a/agent.h +++ b/agent.h @@ -9,9 +9,9 @@ class agent { public: int id; class tile *tile; - class connection &conn; + class connection *conn; - agent(int id_, class tile &tile_, class connection &conn_) : id (id_), tile (&tile_), conn (conn_) + agent(int id_, class tile &tile_, class connection *conn_) : id (id_), tile (&tile_), conn (conn_) { put_at(tile_); }; @@ -20,10 +20,7 @@ public: void on_tick(void); - ~agent() - { - tile->on_agent_leave(*this); - }; + ~agent(); private: /* Just for initial placement. */ diff --git a/main.cc b/main.cc index c3e24cf..677f8ff 100644 --- a/main.cc +++ b/main.cc @@ -52,7 +52,7 @@ main(int argc, char *argv[]) if (cfd >= 0) { class connection *conn = new class connection(cfd); class tile &agentpos = map.tile_at(random() % map.w, random() % map.h); - agent = new class agent(0, agentpos, *conn); + agent = new class agent(0, agentpos, conn); } }