<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>C++ is changing the value of ALLEGRO_COLOR when adding to a vector.</title>
		<link>http://www.allegro.cc/forums/view/614350</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 09 Jun 2014 00:30:55 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi all,</p><p>I made a Ship class that stores the bitmap and the ALLEGRO_COLOR is stored inside the Ship object.</p><p>I have a collection of Ships in a vector and the problem is that, once I push the newly created ship onto the vector, the ALLEGRO_COLOR changes to really low negative values.</p><p>I bet this is a C++ thing, but I can&#39;t figure out why this is happening.</p><p>Here is the lines of code where I am testing this out:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span>Ship ship<span class="k2">(</span>SHIP_WIDTH, SHIP_HEIGTH, ship_X_Position, ship_Y_Position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</span>ship.setColor<span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span>shipCollection.push_back<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

The color of the ship is correct.  But when I access the color of this ship from shipCollection[0] the color value are messed up.</p><p>What does that?</p><p>Ship.h
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#pragma once</span>
<span class="number">  2</span><span class="p">#ifndef SHIP_H</span>
<span class="number">  3</span><span class="p">#define SHIP_H</span>
<span class="number">  4</span><span class="p">#include&lt;iostream&gt;</span>
<span class="number">  5</span><span class="p">#include&lt;allegro5\allegro.h&gt;</span>
<span class="number">  6</span><span class="p">#include&lt;allegro5\allegro_native_dialog.h&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;string&gt;</span>
<span class="number">  8</span><span class="k1">class</span> Ship
<span class="number">  9</span><span class="k2">{</span>
<span class="number"> 10</span>public:
<span class="number"> 11</span>  Ship<span class="k2">(</span><span class="k1">int</span> width, <span class="k1">int</span> heigth, <span class="k1">float</span> upperLeft_X_Position, <span class="k1">float</span> upperLeft_Y_Position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>  ~Ship<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>  Ship<span class="k2">(</span><span class="k1">const</span> Ship <span class="k3">&amp;</span>thisShip<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> getImage<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <span class="k1">void</span> printShip<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>  <span class="k1">void</span> setColor<span class="k2">(</span><span class="k1">int</span> red, <span class="k1">int</span> green, <span class="k1">int</span> blue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> getColor<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  <span class="k1">int</span> width<span class="k2">;</span>
<span class="number"> 19</span>  <span class="k1">int</span> heigth<span class="k2">;</span>
<span class="number"> 20</span>  <span class="k1">float</span> upperLeft_X_Position<span class="k2">;</span>
<span class="number"> 21</span>  <span class="k1">float</span> upperLeft_Y_Position<span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>private:
<span class="number"> 24</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> bitmap<span class="k2">;</span>
<span class="number"> 25</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> shipColor<span class="k2">;</span>
<span class="number"> 26</span>  <span class="k1">void</span> displayErorMessage<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> message<span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>
<span class="number"> 27</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span><span class="p">#endif</span>
</div></div><p>

Ship.cpp
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include "Ship.h"</span>
<span class="number">  2</span>
<span class="number">  3</span>
<span class="number">  4</span>Ship::Ship<span class="k2">(</span><span class="k1">int</span> width, <span class="k1">int</span> heigth, <span class="k1">float</span> upperLeft_X_Position, <span class="k1">float</span> upperLeft_Y_Position<span class="k2">)</span> <span class="k2">:</span> width<span class="k2">(</span>width<span class="k2">)</span>, heigth<span class="k2">(</span>heigth<span class="k2">)</span>,
<span class="number">  5</span>  upperLeft_X_Position<span class="k2">(</span>upperLeft_X_Position<span class="k2">)</span>, upperLeft_Y_Position<span class="k2">(</span>upperLeft_Y_Position<span class="k2">)</span><span class="k2">{</span>
<span class="number">  6</span>    bitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span>this-&gt;width, this-&gt;heigth<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>    <span class="k1">if</span><span class="k2">(</span>bitmap <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number">  8</span>      displayErorMessage<span class="k2">(</span><span class="s">"Can't make bitmap."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  <span class="k2">}</span>
<span class="number"> 10</span>
<span class="number"> 11</span>  Ship::~Ship<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 12</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>  <span class="k2">}</span>
<span class="number"> 14</span>
<span class="number"> 15</span>  Ship::Ship<span class="k2">(</span><span class="k1">const</span> Ship <span class="k3">&amp;</span>thisShip<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 16</span>    this-&gt;upperLeft_X_Position <span class="k3">=</span> thisShip.upperLeft_X_Position<span class="k2">;</span>
<span class="number"> 17</span>    this-&gt;upperLeft_Y_Position <span class="k3">=</span> thisShip.upperLeft_Y_Position<span class="k2">;</span>
<span class="number"> 18</span>    this-&gt;width <span class="k3">=</span> thisShip.width<span class="k2">;</span>
<span class="number"> 19</span>    this-&gt;heigth <span class="k3">=</span> thisShip.heigth<span class="k2">;</span>
<span class="number"> 20</span>    bitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span>thisShip.width, thisShip.heigth<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>    <span class="k1">if</span><span class="k2">(</span>bitmap <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 22</span>      displayErorMessage<span class="k2">(</span><span class="s">"Can't copy bitmap."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>  <span class="k2">}</span>
<span class="number"> 24</span>
<span class="number"> 25</span>  <span class="k1">void</span> Ship::setColor<span class="k2">(</span><span class="k1">int</span> red, <span class="k1">int</span> green, <span class="k1">int</span> blue<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 26</span>    <span class="k1">if</span><span class="k2">(</span>blue <span class="k3">&lt;</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k3">|</span><span class="k3">|</span> green <span class="k3">&lt;</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k3">|</span><span class="k3">|</span> red <span class="k3">&lt;</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k3">|</span><span class="k3">|</span> blue <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">256</span> <span class="k3">|</span><span class="k3">|</span> green <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">256</span> <span class="k3">|</span><span class="k3">|</span> red <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">256</span><span class="k2">)</span> <span class="k2">{</span> <span class="c">// invalid numbers</span>
<span class="number"> 27</span>      shipColor <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>    <span class="k2">}</span>
<span class="number"> 29</span>    <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 30</span>      shipColor <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span>red, green, blue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>    <span class="k2">}</span>
<span class="number"> 32</span>  <span class="k2">}</span>
<span class="number"> 33</span>
<span class="number"> 34</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> Ship::getColor<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 35</span>    <span class="k1">return</span> shipColor<span class="k2">;</span>
<span class="number"> 36</span>  <span class="k2">}</span>
<span class="number"> 37</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> Ship::getImage<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 39</span>  <span class="k2">{</span>
<span class="number"> 40</span>    <span class="k1">return</span> bitmap<span class="k2">;</span>
<span class="number"> 41</span>  <span class="k2">}</span>
<span class="number"> 42</span>
<span class="number"> 43</span>  <span class="k1">void</span> Ship::printShip<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 44</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"upperLeft_X_Position: "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> upperLeft_X_Position <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" "</span><span class="k2">;</span>
<span class="number"> 45</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"upperLeft_Y_Position: "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> upperLeft_Y_Position <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 46</span>  <span class="k2">}</span>
<span class="number"> 47</span>
<span class="number"> 48</span>  <span class="k1">void</span> Ship::displayErorMessage<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> message<span class="k2">)</span> <span class="k1">const</span> <span class="k2">{</span>
<span class="number"> 49</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> errorMessage <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">300</span>, <span class="n">300</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>errorMessage, <span class="s">"Ship Error"</span>, <span class="s">"Ship Error"</span>, message, NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>errorMessage<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>  <span class="k2">}</span>
</div></div><p>

Source.cpp
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include&lt;allegro5\allegro.h&gt;</span>
<span class="number">   2</span><span class="p">#include&lt;allegro5\allegro_native_dialog.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">   5</span><span class="p">#include"Ship.h"</span>
<span class="number">   6</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="k1">enum</span> KeyDirections <span class="k2">{</span> Up, Down, Left, Right <span class="k2">}</span><span class="k2">;</span>
<span class="number">  10</span><span class="k1">int</span> SCREEN_WIDTH <span class="k3">=</span> <span class="n">200</span><span class="k2">;</span>
<span class="number">  11</span><span class="k1">int</span> SCREEN_HEGTH <span class="k3">=</span> <span class="n">200</span><span class="k2">;</span>
<span class="number">  12</span><span class="k1">int</span> SHIP_WIDTH <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  13</span><span class="k1">int</span> SHIP_HEIGTH <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">double</span> FPS <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">60</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  15</span><span class="k1">float</span> SHIPS_MOVEMENT <span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  16</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span>
<span class="number">  17</span><span class="k2">{</span>
<span class="number">  18</span>
<span class="number">  19</span>
<span class="number">  20</span>  std::vector<span class="k3">&lt;</span>Ship&gt; shipCollection<span class="k2">;</span>
<span class="number">  21</span>  <span class="k1">float</span> ship_X_Position <span class="k3">=</span> SCREEN_WIDTH <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  22</span>  <span class="k1">float</span> ship_Y_Position <span class="k3">=</span> SCREEN_HEGTH <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  23</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> mainDisplay <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  24</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a><span class="k3">*</span> screenRefreshTimer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  25</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> eventQueue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  26</span>  <span class="k1">bool</span> KeysPressed<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span> <span class="k1">false</span>, <span class="k1">false</span>, <span class="k1">false</span>, <span class="k1">false</span> <span class="k2">}</span><span class="k2">;</span>
<span class="number">  27</span>  <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  28</span>  <span class="k1">bool</span> doExit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  29</span>
<span class="number">  30</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  31</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>mainDisplay, <span class="s">"Title"</span>, <span class="s">"Heading"</span>, <span class="s">"Text"</span>, NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  33</span>  <span class="k2">}</span>
<span class="number">  34</span>
<span class="number">  35</span>  Ship ship<span class="k2">(</span>SHIP_WIDTH, SHIP_HEIGTH, ship_X_Position, ship_Y_Position<span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>  ship.setColor<span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>  shipCollection.push_back<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> ship.getColor<span class="k2">(</span><span class="k2">)</span>.r <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  39</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> shipCollection<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.getColor<span class="k2">(</span><span class="k2">)</span>.r <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  40</span>  mainDisplay <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>SCREEN_WIDTH, SCREEN_HEGTH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>
<span class="number">  42</span>  <span class="k1">if</span> <span class="k2">(</span>mainDisplay <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  43</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>mainDisplay, <span class="s">"Title"</span>, <span class="s">"Heading"</span>, <span class="s">"Text"</span>, NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  45</span>  <span class="k2">}</span>
<span class="number">  46</span>
<span class="number">  47</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  48</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>mainDisplay, <span class="s">"Title"</span>, <span class="s">"Heading"</span>, <span class="s">"Text"</span>, NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>mainDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>  <span class="k2">}</span>
<span class="number">  51</span>
<span class="number">  52</span>  screenRefreshTimer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span>FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>  <span class="k1">if</span> <span class="k2">(</span>screenRefreshTimer <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  54</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>mainDisplay, <span class="s">"Title"</span>, <span class="s">"Heading"</span>, <span class="s">"Text"</span>, NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>mainDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  57</span>  <span class="k2">}</span>
<span class="number">  58</span>
<span class="number">  59</span>
<span class="number">  60</span>  eventQueue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>  <span class="k1">if</span> <span class="k2">(</span>eventQueue <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  62</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>mainDisplay, <span class="s">"Title"</span>, <span class="s">"Heading"</span>, <span class="s">"Text"</span>, NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>mainDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>screenRefreshTimer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  66</span>  <span class="k2">}</span>
<span class="number">  67</span>  <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>mainDisplay<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>eventQueue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>screenRefreshTimer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>eventQueue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>mainDisplay<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>eventQueue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>  <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>screenRefreshTimer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>
<span class="number">  76</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>doExit<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  77</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> thisEvent<span class="k2">;</span>
<span class="number">  78</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>eventQueue, <span class="k3">&amp;</span>thisEvent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>    <span class="k1">if</span> <span class="k2">(</span>thisEvent.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  80</span>      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span> shipCollection.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  81</span>      <span class="k2">{</span>
<span class="number">  82</span>        <span class="k1">if</span> <span class="k2">(</span>KeysPressed<span class="k2">[</span>Up<span class="k2">]</span> <span class="c">/*&amp;&amp; ship.upperLeft_Y_Position &gt;= 4.0*/</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  83</span>          shipCollection<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>.upperLeft_Y_Position <span class="k3">-</span><span class="k3">=</span> SHIPS_MOVEMENT<span class="k2">;</span>
<span class="number">  84</span>        <span class="k2">}</span>
<span class="number">  85</span>
<span class="number">  86</span>        <span class="k1">if</span> <span class="k2">(</span>KeysPressed<span class="k2">[</span>Down<span class="k2">]</span> <span class="c">/*&amp;&amp; ship.upperLeft_Y_Position &lt;= 200 - 10 - 4.0*/</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  87</span>          shipCollection<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>.upperLeft_Y_Position <span class="k3">+</span><span class="k3">=</span> SHIPS_MOVEMENT<span class="k2">;</span>
<span class="number">  88</span>        <span class="k2">}</span>
<span class="number">  89</span>
<span class="number">  90</span>        <span class="k1">if</span> <span class="k2">(</span>KeysPressed<span class="k2">[</span>Left<span class="k2">]</span> <span class="c">/*&amp;&amp; ship.upperLeft_X_Position &gt;= 4.0*/</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  91</span>          shipCollection<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>.upperLeft_X_Position <span class="k3">-</span><span class="k3">=</span> SHIPS_MOVEMENT<span class="k2">;</span>
<span class="number">  92</span>        <span class="k2">}</span>
<span class="number">  93</span>
<span class="number">  94</span>        <span class="k1">if</span> <span class="k2">(</span>KeysPressed<span class="k2">[</span>Right<span class="k2">]</span> <span class="c">/*&amp;&amp; ship.upperLeft_X_Position &lt;= 200 - 10 - 4.0*/</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  95</span>          shipCollection<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>.upperLeft_X_Position <span class="k3">+</span><span class="k3">=</span> SHIPS_MOVEMENT<span class="k2">;</span>
<span class="number">  96</span>        <span class="k2">}</span>
<span class="number">  97</span>      <span class="k2">}</span>
<span class="number">  98</span>
<span class="number">  99</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 100</span>    <span class="k2">}</span>
<span class="number"> 101</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>thisEvent.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 102</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 103</span>    <span class="k2">}</span>
<span class="number"> 104</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>thisEvent.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 105</span>      <span class="k1">switch</span> <span class="k2">(</span>thisEvent.keyboard.keycode<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 106</span>      <span class="k1">case</span> ALLEGRO_KEY_UP:
<span class="number"> 107</span>        KeysPressed<span class="k2">[</span>Up<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 108</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 109</span>      <span class="k1">case</span> ALLEGRO_KEY_DOWN:
<span class="number"> 110</span>        KeysPressed<span class="k2">[</span>Down<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 111</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 112</span>      <span class="k1">case</span> ALLEGRO_KEY_LEFT:
<span class="number"> 113</span>        KeysPressed<span class="k2">[</span>Left<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 114</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 115</span>      <span class="k1">case</span> ALLEGRO_KEY_RIGHT:
<span class="number"> 116</span>        KeysPressed<span class="k2">[</span>Right<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 117</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 118</span>      <span class="k2">}</span>
<span class="number"> 119</span>    <span class="k2">}</span>
<span class="number"> 120</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>thisEvent.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 121</span>      <span class="k1">switch</span> <span class="k2">(</span>thisEvent.keyboard.keycode<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 122</span>      <span class="k1">case</span> ALLEGRO_KEY_UP:
<span class="number"> 123</span>        KeysPressed<span class="k2">[</span>Up<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 124</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 125</span>      <span class="k1">case</span> ALLEGRO_KEY_DOWN:
<span class="number"> 126</span>        KeysPressed<span class="k2">[</span>Down<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 127</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 128</span>      <span class="k1">case</span> ALLEGRO_KEY_LEFT:
<span class="number"> 129</span>        KeysPressed<span class="k2">[</span>Left<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 130</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 131</span>      <span class="k1">case</span> ALLEGRO_KEY_RIGHT:
<span class="number"> 132</span>        KeysPressed<span class="k2">[</span>Right<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 133</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 134</span>      <span class="k2">}</span>
<span class="number"> 135</span>    <span class="k2">}</span>
<span class="number"> 136</span>
<span class="number"> 137</span>    <span class="k1">if</span> <span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>eventQueue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 138</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 139</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 140</span>      <span class="c">//for(int shipIndex = 0; shipIndex &lt; ShipCollection.size(); shipIndex++)</span>
<span class="number"> 141</span>      <span class="c">//{</span>
<span class="number"> 142</span>      <span class="c">//  al_draw_bitmap(ShipCollection[shipIndex].getImage(), ShipCollection[shipIndex].upperLeft_X_Position, </span>
<span class="number"> 143</span>      <span class="c">//    ShipCollection[shipIndex].upperLeft_Y_Position, 0);</span>
<span class="number"> 144</span>      <span class="c">//}</span>
<span class="number"> 145</span>
<span class="number"> 146</span>      <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>shipCollection<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.getImage<span class="k2">(</span><span class="k2">)</span>, shipCollection<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.upperLeft_X_Position,
<span class="number"> 147</span>        shipCollection<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.upperLeft_Y_Position, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>      <span class="c">/*</span>
<span class="number"> 149</span><span class="c">      foreach Ship in the collections</span>
<span class="number"> 150</span><span class="c">      draw it.</span>
<span class="number"> 151</span><span class="c">      */</span>
<span class="number"> 152</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</span>    <span class="k2">}</span>
<span class="number"> 154</span>  <span class="k2">}</span>
<span class="number"> 155</span>
<span class="number"> 156</span>  <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>screenRefreshTimer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>mainDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darren Hoehna)</author>
		<pubDate>Mon, 09 Jun 2014 00:06:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614350/1001828#target">Darren Hoehna</a> said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre>Ship ship<span class="k2">(</span>SHIP_WIDTH, SHIP_HEIGTH, ship_X_Position, ship_Y_Position<span class="k2">)</span><span class="k2">;</span>
ship.setColor<span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
shipCollection.push_back<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>
You&#39;re adding a copy of ship to your vector, not ship itself. To do that you need to make a vector of ship pointers so you don&#39;t get ships copying themselves. Your copy constructor for ship doesn&#39;t copy the color so it is still uninitialized since you haven&#39;t used a constructor initialization list :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> Example <span class="k2">{</span>
   <span class="k1">int</span> i<span class="k2">;</span>
   <span class="k1">float</span> f<span class="k2">;</span>
   <span class="k1">double</span> d<span class="k2">;</span>
<span class="k1">public</span> <span class="k2">:</span>
   Example<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span>
      i<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,
      f<span class="k2">(</span><span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span>
   <span class="k2">{</span>
      <span class="c">// d is unitialized here</span>
      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%lf\n"</span> , d<span class="k2">)</span><span class="k2">;</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 (Edgar Reynaldo)</author>
		<pubDate>Mon, 09 Jun 2014 00:19:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Right,  when I added the ALLEGRO_COLOR, I forgot to add that to my copy constructor.  <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>I understand.  Thank you again.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darren Hoehna)</author>
		<pubDate>Mon, 09 Jun 2014 00:30:55 +0000</pubDate>
	</item>
</rss>
