<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[OpenLayer] Bitmaps and Iterators</title>
		<link>http://www.allegro.cc/forums/view/589963</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 20 Feb 2007 05:52:57 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m trying to get this to work... here is the pastebin if you&#39;d rather look at it through that <a href="http://pastebin.bafserv.com/699">http://pastebin.bafserv.com/699</a></p><p>Anyway, when using an iterator to call the Draw() method nothing actually draws.  Pressing space in the example will draw them as Draw() is being called directly.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/*</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Author: Matthew Dalrymple</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Revision: One zero one zero zero zero zero one zero</span></td></tr><tr><td class="number">4</td><td><span class="c"> * Title: Testing OpenLayer's Bitmap's and vectors/iterators</span></td></tr><tr><td class="number">5</td><td><span class="c">*/</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="c">// Include the OpenLayer graphical library</span></td></tr><tr><td class="number">8</td><td><span class="p">#include &lt;OpenLayer.hpp&gt;</span></td></tr><tr><td class="number">9</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="c">// Use the OpenLayer namespace</span></td></tr><tr><td class="number">12</td><td><span class="k1">using</span> <span class="k1">namespace</span> ol<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td><span class="k1">class</span> Test</td></tr><tr><td class="number">16</td><td><span class="k2">{</span></td></tr><tr><td class="number">17</td><td>public:</td></tr><tr><td class="number">18</td><td>  Test<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  ~Test<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  <span class="k1">void</span> Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>private:</td></tr><tr><td class="number">22</td><td>  <span class="k1">int</span> x<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  <span class="k1">int</span> y<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  Bitmap theimage<span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>Test::Test<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td><span class="k2">{</span></td></tr><tr><td class="number">29</td><td>  this-&gt;x <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>  this-&gt;y <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>  this-&gt;theimage.Load<span class="k2">(</span><span class="s">"gnolam.png"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>theimage.IsValid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">33</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"ZOMG ITS NOT VALID"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>Test::~Test<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>  this-&gt;theimage.Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td><span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td><span class="k1">void</span> Test::Draw<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">42</td><td><span class="k2">{</span></td></tr><tr><td class="number">43</td><td>  this-&gt;theimage.Blit<span class="k2">(</span>x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td><span class="k2">}</span></td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td>&#160;</td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">49</td><td><span class="k2">{</span></td></tr><tr><td class="number">50</td><td>  <span class="c">// Sets up the devices needed</span></td></tr><tr><td class="number">51</td><td>  <span class="c">//                keyboard, mouse, timer</span></td></tr><tr><td class="number">52</td><td>  Setup::SetupProgram<span class="k2">(</span><span class="k1">true</span>, <span class="k1">false</span>, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>     </td></tr><tr><td class="number">54</td><td>  <span class="c">// Sets up the screen dimensions</span></td></tr><tr><td class="number">55</td><td>  <span class="c">//    Screen Width, Screen Height, WINDOWED OR FULLSCREEN     </span></td></tr><tr><td class="number">56</td><td>  Setup::SetupScreen<span class="k2">(</span><span class="n">800</span>, <span class="n">600</span>, WINDOWED<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>  </td></tr><tr><td class="number">58</td><td>  Bitmap TheScreen<span class="k2">(</span><span class="n">800</span>, <span class="n">600</span>, Rgba::WHITE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>  Bitmap Logo<span class="k2">(</span><span class="s">"logo.png"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>  </td></tr><tr><td class="number">61</td><td>  Test a, b, c, d<span class="k2">;</span></td></tr><tr><td class="number">62</td><td>  </td></tr><tr><td class="number">63</td><td>  vector<span class="k3">&lt;</span> Test <span class="k3">&gt;</span> TheList<span class="k2">;</span></td></tr><tr><td class="number">64</td><td>  TheList.push_back<span class="k2">(</span>a<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>  TheList.push_back<span class="k2">(</span>b<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>  TheList.push_back<span class="k2">(</span>c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>  TheList.push_back<span class="k2">(</span>d<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>  </td></tr><tr><td class="number">69</td><td>  vector<span class="k3">&lt;</span> Test <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter<span class="k2">;</span></td></tr><tr><td class="number">70</td><td>&#160;</td></tr><tr><td class="number">71</td><td>  <span class="c">/*</span></td></tr><tr><td class="number">72</td><td><span class="c">   * This loop is a simple demonstration of continuing until</span></td></tr><tr><td class="number">73</td><td><span class="c">   * a key is pressed, it is highly inefficient. It is strongly</span></td></tr><tr><td class="number">74</td><td><span class="c">   * recommended that you read through the Allegro handbook for</span></td></tr><tr><td class="number">75</td><td><span class="c">   * handling keyboard input.</span></td></tr><tr><td class="number">76</td><td><span class="c">  */</span></td></tr><tr><td class="number">77</td><td>  <span class="k1">float</span> deltaTime <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>     FpsCounter::Start<span class="k2">(</span> <span class="n">60</span>.<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">80</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">81</td><td>    FpsCounter::NewFrameStarted<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">82</td><td>          deltaTime <span class="k3">=</span> FpsCounter::GetDeltaTime<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>          </td></tr><tr><td class="number">84</td><td>          </td></tr><tr><td class="number">85</td><td>    TheScreen.Blit<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>    Logo.Blit<span class="k2">(</span><span class="n">250</span>, <span class="n">250</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>    <span class="k1">for</span><span class="k2">(</span>iter <span class="k3">=</span> TheList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter <span class="k3">!</span><span class="k3">=</span> TheList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">88</td><td>      iter-&gt;Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>    </td></tr><tr><td class="number">90</td><td>    <span class="c">// press space and see that Draw works properly</span></td></tr><tr><td class="number">91</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">92</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">93</td><td>      a.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>      b.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">95</td><td>      c.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>      d.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">97</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">98</td><td>&#160;</td></tr><tr><td class="number">99</td><td>    Canvas::Refresh<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>          <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">102</td><td>  </td></tr><tr><td class="number">103</td><td>  TheScreen.Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>  Logo.Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>&#160;</td></tr><tr><td class="number">106</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td><span class="k2">}</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span> <span class="c">// Required by Allegro &amp; OpenLayer, YOU MUST HAVE THIS</span></td></tr></tbody></table></div></div><p>

What am I doing wrong/how can I correct this?</p><p>Hehe don&#39;t ask why I used gnolam&#39;s avatar.</p><p>EDIT:</p><p>Here is the fix for this.. is there anyway to do this with the above example?
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/*</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Author: Matthew Dalrymple</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Revision: One zero one zero zero zero zero one zero</span></td></tr><tr><td class="number">4</td><td><span class="c"> * Title: Testing OpenLayer's Bitmap's and vectors/iterators</span></td></tr><tr><td class="number">5</td><td><span class="c">*/</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="c">// Include the OpenLayer graphical library</span></td></tr><tr><td class="number">8</td><td><span class="p">#include &lt;OpenLayer.hpp&gt;</span></td></tr><tr><td class="number">9</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="c">// Use the OpenLayer namespace</span></td></tr><tr><td class="number">12</td><td><span class="k1">using</span> <span class="k1">namespace</span> ol<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td><span class="k1">class</span> Test</td></tr><tr><td class="number">16</td><td><span class="k2">{</span></td></tr><tr><td class="number">17</td><td>public:</td></tr><tr><td class="number">18</td><td>  Test<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  ~Test<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  <span class="k1">void</span> Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>private:</td></tr><tr><td class="number">22</td><td>  <span class="k1">int</span> x<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  <span class="k1">int</span> y<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  Bitmap theimage<span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>Test::Test<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td><span class="k2">{</span></td></tr><tr><td class="number">29</td><td>  this-&gt;x <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>  this-&gt;y <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>  this-&gt;theimage.Load<span class="k2">(</span><span class="s">"gnolam.png"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>theimage.IsValid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">33</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"ZOMG ITS NOT VALID"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>Test::~Test<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>  this-&gt;theimage.Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td><span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td><span class="k1">void</span> Test::Draw<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">42</td><td><span class="k2">{</span></td></tr><tr><td class="number">43</td><td>  this-&gt;theimage.Blit<span class="k2">(</span>x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td><span class="k2">}</span></td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td>&#160;</td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">49</td><td><span class="k2">{</span></td></tr><tr><td class="number">50</td><td>  <span class="c">// Sets up the devices needed</span></td></tr><tr><td class="number">51</td><td>  <span class="c">//                keyboard, mouse, timer</span></td></tr><tr><td class="number">52</td><td>  Setup::SetupProgram<span class="k2">(</span><span class="k1">true</span>, <span class="k1">false</span>, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>     </td></tr><tr><td class="number">54</td><td>  <span class="c">// Sets up the screen dimensions</span></td></tr><tr><td class="number">55</td><td>  <span class="c">//    Screen Width, Screen Height, WINDOWED OR FULLSCREEN     </span></td></tr><tr><td class="number">56</td><td>  Setup::SetupScreen<span class="k2">(</span><span class="n">800</span>, <span class="n">600</span>, WINDOWED<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>  </td></tr><tr><td class="number">58</td><td>  Bitmap TheScreen<span class="k2">(</span><span class="n">800</span>, <span class="n">600</span>, Rgba::WHITE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>  Bitmap Logo<span class="k2">(</span><span class="s">"logo.png"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>  </td></tr><tr><td class="number">61</td><td>  Test a, b, c, d<span class="k2">;</span></td></tr><tr><td class="number">62</td><td>  </td></tr><tr><td class="number">63</td><td>  vector<span class="k3">&lt;</span> Test<span class="k3">*</span> <span class="k3">&gt;</span> TheList<span class="k2">;</span></td></tr><tr><td class="number">64</td><td>  TheList.push_back<span class="k2">(</span><span class="k3">&amp;</span>a<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>  TheList.push_back<span class="k2">(</span><span class="k3">&amp;</span>b<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>  TheList.push_back<span class="k2">(</span><span class="k3">&amp;</span>c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>  TheList.push_back<span class="k2">(</span><span class="k3">&amp;</span>d<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>  </td></tr><tr><td class="number">69</td><td>  vector<span class="k3">&lt;</span> Test<span class="k3">*</span> <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter<span class="k2">;</span></td></tr><tr><td class="number">70</td><td>&#160;</td></tr><tr><td class="number">71</td><td>  <span class="c">/*</span></td></tr><tr><td class="number">72</td><td><span class="c">   * This loop is a simple demonstration of continuing until</span></td></tr><tr><td class="number">73</td><td><span class="c">   * a key is pressed, it is highly inefficient. It is strongly</span></td></tr><tr><td class="number">74</td><td><span class="c">   * recommended that you read through the Allegro handbook for</span></td></tr><tr><td class="number">75</td><td><span class="c">   * handling keyboard input.</span></td></tr><tr><td class="number">76</td><td><span class="c">  */</span></td></tr><tr><td class="number">77</td><td>  <span class="k1">float</span> deltaTime <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>     FpsCounter::Start<span class="k2">(</span> <span class="n">60</span>.<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">80</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">81</td><td>    FpsCounter::NewFrameStarted<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">82</td><td>          deltaTime <span class="k3">=</span> FpsCounter::GetDeltaTime<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>          </td></tr><tr><td class="number">84</td><td>          </td></tr><tr><td class="number">85</td><td>    TheScreen.Blit<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>    Logo.Blit<span class="k2">(</span><span class="n">250</span>, <span class="n">250</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>    <span class="k1">for</span><span class="k2">(</span>iter <span class="k3">=</span> TheList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter <span class="k3">!</span><span class="k3">=</span> TheList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">88</td><td>      <span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>    </td></tr><tr><td class="number">90</td><td>    <span class="c">// press space and see that Draw works properly</span></td></tr><tr><td class="number">91</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">92</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">93</td><td>      a.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>      b.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">95</td><td>      c.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>      d.Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">97</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">98</td><td>&#160;</td></tr><tr><td class="number">99</td><td>    Canvas::Refresh<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>          <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">102</td><td>  </td></tr><tr><td class="number">103</td><td>  TheScreen.Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>  Logo.Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>&#160;</td></tr><tr><td class="number">106</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td><span class="k2">}</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span> <span class="c">// Required by Allegro &amp; OpenLayer, YOU MUST HAVE THIS</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Thu, 08 Feb 2007 09:46:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If Bitmap doesn&#39;t have a proper copy constructor, it won&#39;t be copied, and it won&#39;t be displayed. Maybe checking IsValid inside the Draw method will tell you something?</p><p>When you push the a, b, c, and d objects into the vector, you push the actual objects, so you actually make a copy of them. When this happens, OpenLayer has to send a copy of the Bitmap to the graphics card. I don&#39;t know if it handles this properly. One possible fix is to use a Bitmap* inside the class, and continue to use a vector of objects, but the pointer method is superior for most cases in terms of performance.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Thu, 08 Feb 2007 09:53:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>FYI: CGamesPlay was a major contributor to this being fixed :-D.</p><p>Another error that I&#39;m having that CGamesPlay said was the right syntax and I thought so myself is this line:</p><div class="source-code snippet"><div class="inner"><pre>...
vector <span class="k3">&lt;</span> Avatars<span class="k3">*</span> <span class="k3">&gt;</span> CurrentList, AvatarList<span class="k2">;</span>
<span class="c">// Avatar List gets filled so don't worry there is stuff in it</span>
...

CurrentList.reserve<span class="k2">(</span>MAX_AVATARS_ON_SCREEN<span class="k2">)</span><span class="k2">;</span>
<span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> MAX_AVATARS_ON_SCREEN<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
  CurrentList.push_back<span class="k2">(</span>AvatarList.at<span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % AvatarList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
*.at() should return a pointer and so it compiles correctly.  The problem is that it stops things from being drawn and causes my CPU to be 100% and lags like crazy.  I comment that line out and &quot;bam&quot; it&#39;s fixed.  Is their a correct way to do this or is their a workaround like maybe setting a temp Avatar instance setting it equal to *.at(...) then pushing it to the back of CurrentList?  I would rather have a one line simple thing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Thu, 08 Feb 2007 14:57:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What is the value of MAX_AVATARS_ON_SCREEN?</p><p>Like I said: that line of code is fine. Show the part where you draw, for instance.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Thu, 08 Feb 2007 19:21:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>MAX_AVATARS_ON_SCREEN is set to 15 for now.</p><p>This is how they&#39;re drawn:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">bool</span> Game::DrawAvatars<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  vector<span class="k3">&lt;</span> Avatar<span class="k3">*</span> <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator curAvatar<span class="k2">;</span>
  <span class="k1">for</span><span class="k2">(</span>curAvatar <span class="k3">=</span> CurrentList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar <span class="k3">!</span><span class="k3">=</span> CurrentList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
    <span class="k2">(</span><span class="k3">*</span>curAvatar<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  <span class="c">//Log::log("CurrentList.size() = %i", CurrentList.size());</span>
  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

This is the Avatar&#39;s Draw method:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">bool</span> Avatar::Draw<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="k2">{</span>
  this-&gt;m_Avatar.Blit<span class="k2">(</span><span class="n">10</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

EDIT:   I hate having difficult questions that no one knows the exact answer to or just ignore me <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /><img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /><img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Fri, 09 Feb 2007 07:46:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I wonder if you&#39;ve found the answer yet?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Wed, 14 Feb 2007 01:01:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Donno why its hanging there, likely a copy paste error or something.
</p><div class="source-code snippet"><div class="inner"><pre>CurrentList.reserve<span class="k2">(</span>MAX_AVATARS_ON_SCREEN<span class="k2">)</span><span class="k2">;</span>
<span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> MAX_AVATARS_ON_SCREEN<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
  CurrentList.push_back<span class="k2">(</span>AvatarList.at<span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % AvatarList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Should be:
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;algorithm&gt;</span>

CurrentList.resize<span class="k2">(</span>AvatarList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
random_sample<span class="k2">(</span>AvatarList.begin<span class="k2">(</span><span class="k2">)</span>, AvatarList.end<span class="k2">(</span><span class="k2">)</span>, CurrentList.begin<span class="k2">(</span><span class="k2">)</span>, CurrentList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Here is the fix for this.. is there anyway to do this with the above example?
</p></div></div><p>
Its not pretty:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">class</span> Test</td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>public:</td></tr><tr><td class="number">4</td><td>  Test<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  ~Test<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <span class="k1">void</span> Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  </td></tr><tr><td class="number">8</td><td>  Test<span class="k2">(</span><span class="k1">const</span> Test <span class="k3">&amp;</span>t<span class="k2">)</span></td></tr><tr><td class="number">9</td><td>   <span class="k2">:</span> x<span class="k2">(</span>t.x<span class="k2">)</span>, y<span class="k2">(</span>t.y<span class="k2">)</span>, theimage<span class="k2">(</span>t.theimage<span class="k2">)</span></td></tr><tr><td class="number">10</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>    <span class="k2">(</span><span class="k2">(</span>Test<span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>t<span class="k2">)</span>.theimage <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>  </td></tr><tr><td class="number">14</td><td>private:</td></tr><tr><td class="number">15</td><td>  <span class="k1">int</span> x<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  <span class="k1">int</span> y<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  Bitmap <span class="k3">*</span>theimage<span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>Test::Test<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">21</td><td><span class="k2">:</span> theimage<span class="k2">(</span><span class="k1">new</span> Bitmap<span class="k2">)</span></td></tr><tr><td class="number">22</td><td><span class="k2">{</span></td></tr><tr><td class="number">23</td><td>  this-&gt;x <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  this-&gt;y <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>  this-&gt;theimage-&gt;Load<span class="k2">(</span><span class="s">"gnolam.png"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>theimage-&gt;IsValid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">27</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"ZOMG ITS NOT VALID"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>Test::~Test<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">31</td><td><span class="k2">{</span></td></tr><tr><td class="number">32</td><td>  <span class="k1">if</span><span class="k2">(</span>theimage<span class="k2">)</span></td></tr><tr><td class="number">33</td><td>    this-&gt;theimage-&gt;Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>  <span class="k1">delete</span> theimage<span class="k2">;</span></td></tr><tr><td class="number">35</td><td><span class="k2">}</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td>.. <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a> is same <span class="k2">(</span>except <span class="k1">using</span> <span class="k3">-</span><span class="k3">&gt;</span> instead of .<span class="k2">)</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 14 Feb 2007 01:20:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I wonder if you&#39;ve found the answer yet?
</p></div></div><p>
Haha nope, well now that DD has posted I might have.</p><p>To DD (Or anyone else):</p><p>I&#39;m reading about random_sample() from cppreference.com and it seems that it confuses me haha.<br />AvatarList holds 1 copy of each avatar, now CurrentList is supposed to be holding the  actual avatars you&#39;ll see and fight.  When one dies a random avatar from AvatarList will be popped onto CurrentList.  Now will random_sample() work for what I&#39;m doing (just for the initialization though)?  Does it randomly put them into CurrentList depending on CurrentList&#39;s size?  The way it looks it seems like CurrentList needs to already be full <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Wed, 14 Feb 2007 02:07:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code">random_sample<span class="k2">(</span>AvatarList.begin<span class="k2">(</span><span class="k2">)</span>, AvatarList.end<span class="k2">(</span><span class="k2">)</span>, CurrentList.begin<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> dead_avatar_index, CurrentList.begin<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> dead_avatar_index <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span></span>That will make it replace 1. I have no idea why you wouldn&#39;t just use your code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Wed, 14 Feb 2007 02:09:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I would use my code because it doesn&#39;t work.  It may be logically correct but its causing things to not work, I mean I can rar it up again and show you how it doesn&#39;t work <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>Edit:  I keep getting the error: random_sample().. first use of this function.  And I&#39;ve included algorithm &gt;.&lt;  Rebuilt all... Baaaah.<br />Eww totally had to include &lt;algo.h&gt; to get it to work <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /> I dunno why.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Wed, 14 Feb 2007 02:25:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Edit: I keep getting the error: random_sample().. first use of this function. And I&#39;ve included algorithm &gt;.&lt; Rebuilt all... Baaaah.<br />Eww totally had to include &lt;algo.h&gt; to get it to work <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /> I dunno why.
</p></div></div><p>

Err, maybe std::random_sample or &quot;using namespace std;&quot; would help? These seem like errors you get when you forget about a namespace <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />. This and the fact that &lt;algorithm&gt; probably only wraps &lt;algo.h&gt; in a namespace <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Wed, 14 Feb 2007 05:50:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
When one dies a random avatar from AvatarList will be popped onto CurrentList.
</p></div></div><p>
[edit]Ah I see.  Yes your code is better suited for this task.  Just don&#39;t use reserve.  Its generally useless unless you really know what you&#39;re doing.  And even when you do, it pretty much will only apply to one compiler.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 14 Feb 2007 11:17:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Jakub Wasilewski said:</div><div class="quote"><p>
Err, maybe std::random_sample or &quot;using namespace std;&quot; would help?
</p></div></div><p>

Tried that and I am already using the standard namespace.</p><div class="quote_container"><div class="title">Dustin Dettmer said:</div><div class="quote"><p>
Just don&#39;t use reserve.
</p></div></div><p>
Then how do I set the size that CurrentList is going to be filled up to?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Thu, 15 Feb 2007 16:36:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code">vec.resize<span class="k2">(</span>newsize<span class="k2">)</span><span class="k2">;</span></span><img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Thu, 15 Feb 2007 20:01:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Bah I never saw resize() on cppreference.com, I always overlook things.  That&#39;s totally what I wanted to use in my other projects too not reserve().  Umm where can I get an update for all the standard libraries because no matter what I try I can&#39;t get  random_sample() to work with &lt;algorithm&gt;.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Fri, 16 Feb 2007 06:46:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What compiler are you using?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Fri, 16 Feb 2007 09:44:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>MinGW (the version that came with Dev-C++ beta 5 [4.9.9.2 or whatever])
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Fri, 16 Feb 2007 10:30:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Should support it just fine.  Paste some code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Sat, 17 Feb 2007 07:09:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Paste some code.
</p></div></div><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#define MAX_AVATARS_ON_SCREEN 15</span>
...
<span class="p">#include &lt;algorithm&gt;</span>
...
CurrentList.resize<span class="k2">(</span>MAX_AVATARS_ON_SCREEN<span class="k2">)</span><span class="k2">;</span>
random_sample<span class="k2">(</span>AvatarList.begin<span class="k2">(</span><span class="k2">)</span>, AvatarList.end<span class="k2">(</span><span class="k2">)</span>, CurrentList.begin<span class="k2">(</span><span class="k2">)</span>, CurrentList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

When I use <span class="source-code"><span class="p">#include &lt;algo.h&gt;</span></span><br />I get errors when trying to draw my CurrentList using <span class="source-code"><span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span><span class="k2">)</span></span> My logfile is full of
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Â is not valid
</p></div></div><p>
for all of my Avatars in CurrentList.  I changed CurrentList and AvatarList from vector &lt; Avatar* &gt; to vector &lt; Avatar &gt; and I got their names instead of that weird A but they were still not valid &gt;.&lt;.  I&#39;m thinking about trying this with an array instead of a vector.  Or maybe try and STL::List (but lists and vectors are so similar I wouldn&#39;t see how that would effect things.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Sat, 17 Feb 2007 07:43:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Could you show the code that wrote the &quot;Â is not valid&quot;, as well as the full code for the Avatar class?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sat, 17 Feb 2007 07:50:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Avatar.hpp
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#ifndef __AVATARS_HPP__</span></td></tr><tr><td class="number">2</td><td><span class="p">#define __AVATARS_HPP__</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#include "stdafx.hpp"</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="p">#define TOPLEFT  0</span></td></tr><tr><td class="number">7</td><td><span class="p">#define TOPRIGHT  1</span></td></tr><tr><td class="number">8</td><td><span class="p">#define BOTLEFT  2</span></td></tr><tr><td class="number">9</td><td><span class="p">#define BOTRIGHT  3</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">class</span> Avatar</td></tr><tr><td class="number">13</td><td><span class="k2">{</span></td></tr><tr><td class="number">14</td><td>public:</td></tr><tr><td class="number">15</td><td>  Avatar<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  Avatar<span class="k2">(</span>std::string fileName<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  ~Avatar<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  <span class="k1">bool</span> Load<span class="k2">(</span>std::string fileName<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  <span class="k1">void</span> Draw<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  <span class="k1">void</span> Update<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>  </td></tr><tr><td class="number">22</td><td>  std::string  GetName<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  <span class="k1">void</span>      SetName<span class="k2">(</span>std::string name<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>  <span class="c">/**</span></td></tr><tr><td class="number">26</td><td><span class="c">  * Position the image in one of the four corners of the screen</span></td></tr><tr><td class="number">27</td><td><span class="c">  * Paramater takes: TOPLEFT | TOPRIGHT | BOTLEFT | BOTRIGHT</span></td></tr><tr><td class="number">28</td><td><span class="c">  **/</span></td></tr><tr><td class="number">29</td><td>  <span class="k1">void</span>      Reposition<span class="k2">(</span><span class="k1">int</span> corner<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>private:</td></tr><tr><td class="number">31</td><td>  Bitmap    m_Avatar<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  std::string  m_Name<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>  <span class="k1">int</span>      x<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>  <span class="k1">int</span>      y<span class="k2">;</span></td></tr><tr><td class="number">35</td><td>  <span class="k1">int</span>      m_Corner<span class="k2">;</span></td></tr><tr><td class="number">36</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
Avatar.cpp
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include "../include/stdafx.hpp"</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td>Avatar::Avatar<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  <span class="c">// Starting the image at one of the four courners of the map</span></td></tr><tr><td class="number">6</td><td>  Reposition<span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">3</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td><span class="k2">}</span></td></tr><tr><td class="number">8</td><td>Avatar::Avatar<span class="k2">(</span>std::string fileName<span class="k2">)</span></td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>  Load<span class="k2">(</span>fileName<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k2">}</span></td></tr><tr><td class="number">12</td><td>Avatar::~Avatar<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">13</td><td><span class="k2">{</span></td></tr><tr><td class="number">14</td><td>  this-&gt;m_Avatar.Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr><tr><td class="number">16</td><td><span class="k1">bool</span> Avatar::Load<span class="k2">(</span>std::string fileName<span class="k2">)</span></td></tr><tr><td class="number">17</td><td><span class="k2">{</span></td></tr><tr><td class="number">18</td><td>  this-&gt;m_Avatar.Load<span class="k2">(</span>fileName.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  Log::verify<span class="k2">(</span>this-&gt;m_Avatar.IsValid<span class="k2">(</span><span class="k2">)</span>, <span class="s">"%s did not load correctly"</span>, fileName.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>this-&gt;m_Avatar.IsValid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">21</td><td>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td><span class="k2">}</span></td></tr><tr><td class="number">24</td><td><span class="k1">void</span> Avatar::Draw<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td><span class="k2">{</span></td></tr><tr><td class="number">26</td><td>  Log::verify<span class="k2">(</span>m_Avatar.IsValid<span class="k2">(</span><span class="k2">)</span>, <span class="s">"%s is not valid"</span>, m_Name.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>  this-&gt;m_Avatar.Blit<span class="k2">(</span><span class="n">10</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td><span class="k1">void</span> Avatar::Update<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">31</td><td><span class="k2">{</span></td></tr><tr><td class="number">32</td><td><span class="k2">}</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td><span class="c">/* DONT MIND THIS FUNCTION YET :D */</span></td></tr><tr><td class="number">35</td><td><span class="k1">void</span> Avatar::Reposition<span class="k2">(</span><span class="k1">int</span> corner<span class="k2">)</span></td></tr><tr><td class="number">36</td><td><span class="k2">{</span></td></tr><tr><td class="number">37</td><td>  m_Corner <span class="k3">=</span> corner<span class="k2">;</span></td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>  this-&gt;x <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>  this-&gt;y <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">;</span></td></tr><tr><td class="number">41</td><td><span class="k2">}</span></td></tr><tr><td class="number">42</td><td>&#160;</td></tr><tr><td class="number">43</td><td>std::string Avatar::GetName<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">44</td><td><span class="k2">{</span></td></tr><tr><td class="number">45</td><td>  <span class="k1">return</span> this-&gt;m_Name<span class="k2">;</span></td></tr><tr><td class="number">46</td><td><span class="k2">}</span></td></tr><tr><td class="number">47</td><td><span class="k1">void</span>  Avatar::SetName<span class="k2">(</span>std::string name<span class="k2">)</span></td></tr><tr><td class="number">48</td><td><span class="k2">{</span></td></tr><tr><td class="number">49</td><td>  this-&gt;m_Name <span class="k3">=</span> name<span class="k2">;</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Ok to get the log file to produce this:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">2</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">3</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">4</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">5</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">6</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">7</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">8</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">9</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">10</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">11</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">12</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">13</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">14</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">15</td><td>Á is <span class="k1">not</span> valid</td></tr><tr><td class="number">16</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">17</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">18</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">19</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">20</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">21</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">22</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">23</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">24</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">25</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">26</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">27</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">28</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">29</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr><tr><td class="number">30</td><td><span class="k2">(</span>null<span class="k2">)</span> is <span class="k1">not</span> valid</td></tr></tbody></table></div></div><p>
This is what I did<br />Game.cpp area:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">bool</span> Game::LoadAvatars<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>...</td></tr><tr><td class="number">4</td><td>  CurrentList.resize<span class="k2">(</span>MAX_AVATARS_ON_SCREEN<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  random_sample<span class="k2">(</span>AvatarList.begin<span class="k2">(</span><span class="k2">)</span>, AvatarList.end<span class="k2">(</span><span class="k2">)</span>, CurrentList.begin<span class="k2">(</span><span class="k2">)</span>, CurrentList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>...</td></tr><tr><td class="number">7</td><td><span class="k2">}</span></td></tr><tr><td class="number">8</td><td><span class="c">/**</span></td></tr><tr><td class="number">9</td><td><span class="c">* Draw the current list of avatars to the screen at their correct coordinates</span></td></tr><tr><td class="number">10</td><td><span class="c">**/</span></td></tr><tr><td class="number">11</td><td><span class="k1">bool</span> Game::DrawAvatars<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">12</td><td><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>  vector<span class="k3">&lt;</span> Avatar<span class="k3">*</span> <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator curAvatar<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  <span class="k1">for</span><span class="k2">(</span>curAvatar <span class="k3">=</span> CurrentList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar <span class="k3">!</span><span class="k3">=</span> CurrentList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">(</span><span class="k3">*</span>curAvatar<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  <span class="c">//Log::log("CurrentList.size() = %i", CurrentList.size());</span></td></tr><tr><td class="number">17</td><td>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td><span class="c">/**</span></td></tr><tr><td class="number">21</td><td><span class="c">* Update the Avatar sprites to their new locations</span></td></tr><tr><td class="number">22</td><td><span class="c">**/</span></td></tr><tr><td class="number">23</td><td><span class="k1">bool</span> Game::UpdateAvatars<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">24</td><td><span class="k2">{</span></td></tr><tr><td class="number">25</td><td>  vector<span class="k3">&lt;</span> Avatar<span class="k3">*</span> <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator curAvatar<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>  <span class="k1">for</span><span class="k2">(</span>curAvatar <span class="k3">=</span> CurrentList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar <span class="k3">!</span><span class="k3">=</span> CurrentList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">27</td><td>    <span class="k2">(</span><span class="k3">*</span>curAvatar<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Sat, 17 Feb 2007 08:14:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Add a copy constructor to your object:</p><div class="source-code snippet"><div class="inner"><pre>Avatar::Avatar<span class="k2">(</span><span class="k1">const</span> Avatar<span class="k3">&amp;</span> other<span class="k2">)</span>
<span class="k2">{</span>
    Log::error<span class="k2">(</span><span class="s">"Object not allowed to be copied"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sat, 17 Feb 2007 08:21:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Same log file.  The object isn&#39;t being copied.  Is that good or bad?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Sat, 17 Feb 2007 08:33:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Good <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Unfortunately, I&#39;m at a loss. Start dumping your objects at very frequent intervals and see what causes them to screw up. Make sure they are loaded correctly.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sat, 17 Feb 2007 08:59:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Baaaaah, this is what always defers me away from programming sometimes.  Everything always looks right, seems like it should work... BAM! RUN TIME ERRORS that are hard as hell to solve.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Sat, 17 Feb 2007 10:44:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Which is why strict typing is a wonderful language feature.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Sun, 18 Feb 2007 06:20:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">DD said:</div><div class="quote"><p>

Which is why strict typing is a wonderful language feature.
</p></div></div><p>
Can you point me in a direction so I can learn more about this?  I Google&#39;d and Wikipedia&#39;d this subject with no specific results.  I don&#39;t see how this subject directly effects my current project, are you referring to the use of templates in the STL?</p><p>EDIT:</p><p>I think I might have narrowed down the problem.  I am now trying to use an iterator just to draw AvatarList to the screen but that isn&#39;t working.  So my problem is probably how I&#39;m loading the avatars.  Here&#39;s my loading code.  Is the tempAvatar being erased after it leaves the scope of the do-while loop?  Should AvatarList maybe be a vector of Avatar objects and not a vector of pointers to Avatar objects?</p><p>Anyway I&#39;ll be trying this out while I post the code here:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">bool</span> Game::LoadAvatars<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>  Log::log<span class="k2">(</span><span class="s">"[LIST OF AVATARS]"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  string AvatarDirectory<span class="k2">(</span><span class="s">"images/avatars/"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  </td></tr><tr><td class="number">6</td><td>  <span class="c">// The allegro file info structure</span></td></tr><tr><td class="number">7</td><td>  <a href="http://www.allegro.cc/manual/al_ffblk" target="_blank"><span class="a">al_ffblk</span></a> info<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>  </td></tr><tr><td class="number">9</td><td>  <span class="c">// Checking to see if there are PNG files in there</span></td></tr><tr><td class="number">10</td><td>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_findfirst" target="_blank"><span class="a">al_findfirst</span></a><span class="k2">(</span><span class="s">"images/avatars/*.png"</span>, <span class="k3">&amp;</span>info, FA_ALL<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">11</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>    Log::warning<span class="k2">(</span><span class="s">"No avatars were found"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  <span class="k2">}</span>  </td></tr><tr><td class="number">15</td><td>  <span class="c">// While there are PNG files, lets grab them and load them</span></td></tr><tr><td class="number">16</td><td>  <span class="k1">do</span></td></tr><tr><td class="number">17</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>    Log::log<span class="k2">(</span><span class="s">"%s"</span>, info.name<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    string path <span class="k3">=</span> AvatarDirectory <span class="k3">+</span> info.name<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>    <span class="c">/* PROBABLE PROBLEM AREA */</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>    Avatar tempAvatar<span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    tempAvatar.SetName<span class="k2">(</span>info.name<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    </td></tr><tr><td class="number">26</td><td>    this-&gt;AvatarList.push_back<span class="k2">(</span><span class="k3">&amp;</span>tempAvatar<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">28</td><td>  <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_findnext" target="_blank"><span class="a">al_findnext</span></a><span class="k2">(</span><span class="k3">&amp;</span>info<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>  </td></tr><tr><td class="number">30</td><td>  <span class="c">// Close the file search</span></td></tr><tr><td class="number">31</td><td>  <a href="http://www.allegro.cc/manual/al_findclose" target="_blank"><span class="a">al_findclose</span></a><span class="k2">(</span><span class="k3">&amp;</span>info<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  </td></tr><tr><td class="number">33</td><td>  Log::log<span class="k2">(</span><span class="s">"[/LIST OF AVATARS]"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Mon, 19 Feb 2007 12:19:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">do</span>
  <span class="k2">{</span>
    Log::log<span class="k2">(</span><span class="s">"%s"</span>, info.name<span class="k2">)</span><span class="k2">;</span>
    string path <span class="k3">=</span> AvatarDirectory <span class="k3">+</span> info.name<span class="k2">;</span>

    <span class="c">/* PROBABLE PROBLEM AREA */</span>

    Avatar tempAvatar<span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
    tempAvatar.SetName<span class="k2">(</span>info.name<span class="k2">)</span><span class="k2">;</span>
    
    this-&gt;AvatarList.push_back<span class="k2">(</span><span class="k3">&amp;</span>tempAvatar<span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span> <span class="c">// tempAvater's destructor is called here</span>
</pre></div></div><p>
Corrected (don&#39;t forget to call delete later!):
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">do</span>
  <span class="k2">{</span>
    Log::log<span class="k2">(</span><span class="s">"%s"</span>, info.name<span class="k2">)</span><span class="k2">;</span>
    string path <span class="k3">=</span> AvatarDirectory <span class="k3">+</span> info.name<span class="k2">;</span>

    <span class="c">/* PROBABLE PROBLEM AREA */</span>

    Avatar <span class="k3">*</span>tempAvatar <span class="k3">=</span> <span class="k1">new</span> Avatar<span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
    tempAvatar-&gt;SetName<span class="k2">(</span>info.name<span class="k2">)</span><span class="k2">;</span>
    
    this-&gt;AvatarList.push_back<span class="k2">(</span>tempAvatar<span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Mon, 19 Feb 2007 12:29:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>By calling delete later you mean after I push it onto AvatarList correct?  Bah things still aren&#39;t drawing and the program is crashing when I try and end it by pressing escape.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Mon, 19 Feb 2007 12:57:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No when you&#39;re done with this-&gt;AvatarList.  For example in the destructor.  But do it wherever is appropriate for you.</p><p>When you give up ownership of your memory is up to you.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Mon, 19 Feb 2007 13:10:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes but tempAvatar is only in the scope of that do-while loop.  Maybe I&#39;m missing something here.</p><p>Oh and the crashing error I was having was caused by a new not fully implemented feature of my logging system.</p><p>Ok well things are totally drawing now, as I&#39;m writing this I just removed the delete tempAvatar line and yeah.. shh &lt;sarcasm&gt; there probably isn&#39;t a memory leak now &lt;/sarcasm&gt;</p><p>Now I&#39;ll go around deleting their allocated memory in the game&#39;s de-constructor.  I&#39;ll get back in a little bit with an update.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Mon, 19 Feb 2007 13:39:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I believe your ownership of tempAvatar extends beyond the do loop.  Do you ever access the pointer again?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Mon, 19 Feb 2007 13:46:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t ever access tempAvatar but I do access AvatarList.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Mon, 19 Feb 2007 13:54:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t forget how pointers work! When you copy a pointer, you don&#39;t copy the data it points to, you copy the directions for how to get to the data. Since you made the data yourself (using <tt>new</tt>), you need to get rid of it yourself, using <tt>delete</tt>. When do you do that? When you don&#39;t need the data any more. Whenever you would erase the avatar from the avatar list, instead of just deleting it, delete the data, then remove it from the list.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Mon, 19 Feb 2007 19:53:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well what I was getting at was specifically having to delete tempAvatar, as tempAvatar was only used to load objects into AvatarList.  This was done in the constructor of my Game class...  So in the de-constructor I did this:</p><div class="source-code snippet"><div class="inner"><pre>vector<span class="k3">&lt;</span> Avatar<span class="k3">*</span> <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator curAvatar<span class="k2">;</span>
<span class="k1">for</span><span class="k2">(</span>curAvatar <span class="k3">=</span> CurrentList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar <span class="k3">!</span><span class="k3">=</span> CurrentList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> curAvatar<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
  <span class="k1">delete</span> <span class="k3">*</span>curAvatar<span class="k2">;</span>
</pre></div></div><p>

I believe that is correct.  What I was trying to get at with my questions was more specifically was if you guys were telling me to delete tempAvatar, which I thought you were which was confusing me.  I keep poking at this because I&#39;m a bit on the unsure side and I hate being unsure and still delving into things.</p><p>Things are working now and everything is drawing and logging correctly.  But because I am ME, this has shown me new errors.  Haha now the images aren&#39;t randomly drawing to the screen... they are drawing at the same random spots every time I run the program.  I&#39;m not even sure all 15 are being drawn.</p><p>I might also be having a PWD problem to, as when I compile + run in Dev-C++ I think all the *.png avatars show up... but when I double click on the executable only two  show up.</p><p>I&#39;ll try and solve those problems on my own first of course as programming is about solving problems <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />.  I might just add on to this thread if I need more help as I don&#39;t like to create lots of threads.</p><p>EDIT:  Haha I&#39;m totally dumb.  I forgot I was using the constructor that takes a path to load a file.  So when I&#39;m logging stuff in the other constructors I was freaking out on why they weren&#39;t getting called... That fixed the X and Y random coord thing I was working on.</p><p>EDIT 2:  Well imma just give props as the problem is fixed and now I can focus on the logic of my game and have a early version of it up in a day or two on the depot.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Tue, 20 Feb 2007 05:52:57 +0000</pubDate>
	</item>
</rss>
