<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Forward Declaration Problem, among other things...</title>
		<link>http://www.allegro.cc/forums/view/584241</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 14 May 2006 17:44:05 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I got a million of these:</p><p>C:\...main.cpp:37: error: invalid use of undefined type `struct Unit&#39;<br />C:\...main.cpp:12: error: forward declaration of `struct Unit&#39;</p><p>For different classes though.</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 "color constants.h"</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">class</span> Game<span class="k2">;</span></td></tr><tr><td class="number">8</td><td><span class="k1">class</span> Map<span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k1">class</span> Cell<span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">class</span> Player<span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">class</span> Unit<span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k1">class</span> Effect<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k1">class</span> Projectile<span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="k1">class</span> GUI<span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k1">class</span> ChatBox<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="k1">class</span> Game</td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>  private:</td></tr><tr><td class="number">20</td><td>    Map <span class="k3">*</span>map<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    vector<span class="k3">&lt;</span>Player<span class="k3">*</span><span class="k3">&gt;</span> playerList<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    vector<span class="k3">&lt;</span>Unit<span class="k3">*</span><span class="k3">&gt;</span> unitList<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    vector<span class="k3">&lt;</span>Effect<span class="k3">*</span><span class="k3">&gt;</span> effectList<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    vector<span class="k3">&lt;</span>Projectile<span class="k3">*</span><span class="k3">&gt;</span> projectileList<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    GUI <span class="k3">*</span>myGUI<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    ChatBox <span class="k3">*</span>myChatBox<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tileSet<span class="k2">[</span><span class="n">12</span><span class="k2">]</span><span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// 12 tiles to a set, 5 variations of each tile</span></td></tr><tr><td class="number">28</td><td>    <span class="k1">long</span> lastClock<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> step<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">long</span> dt <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_103.html" target="_blank">clock</a><span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> lastClock<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>      lastClock <span class="k3">+</span><span class="k3">=</span> dt<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>      <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> unitList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><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>        <span class="k1">if</span> <span class="k2">(</span>unitList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>removeMe<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>          unitList.erase<span class="k2">(</span>unitList.begin<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> i<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>        <span class="k1">else</span></td></tr><tr><td class="number">41</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>          unitList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>act<span class="k2">(</span>dt<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>          i<span class="k3">+</span><span class="k3">+</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="k2">}</span></td></tr><tr><td class="number">46</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td>    <span class="k1">void</span> draw<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="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> playerList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">51</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">52</td><td>        map-&gt;draw<span class="k2">(</span>playerList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> unitList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">54</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">55</td><td>          unitList.at<span class="k2">(</span>j<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>draw<span class="k2">(</span>playerList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">57</td><td>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> effectList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">58</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">59</td><td>          effectList.at<span class="k2">(</span>j<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>draw<span class="k2">(</span>playerList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">61</td><td>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> projectileList.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">62</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">63</td><td>          projectileList.at<span class="k2">(</span>j<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>draw<span class="k2">(</span>playerList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">65</td><td>        myGUI-&gt;draw<span class="k2">(</span>playerList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>        myChatBox-&gt;draw<span class="k2">(</span>playerList.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">68</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td>  public:</td></tr><tr><td class="number">71</td><td>    Game<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">72</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">73</td><td>      map <span class="k3">=</span> <span class="k1">new</span> Map<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>      myGUI <span class="k3">=</span> <span class="k1">new</span> GUI<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>      myChatBox <span class="k3">=</span> <span class="k1">new</span> ChatBox<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">76</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">77</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>&#160;</td></tr><tr><td class="number">79</td><td><span class="k1">class</span> Map</td></tr><tr><td class="number">80</td><td><span class="k2">{</span></td></tr><tr><td class="number">81</td><td>  private:</td></tr><tr><td class="number">82</td><td>    <span class="k1">int</span> rows<span class="k2">;</span></td></tr><tr><td class="number">83</td><td>    <span class="k1">int</span> columns<span class="k2">;</span></td></tr><tr><td class="number">84</td><td>    Cell <span class="k3">*</span>cellArray<span class="k2">;</span></td></tr><tr><td class="number">85</td><td>&#160;</td></tr><tr><td class="number">86</td><td>  public:</td></tr><tr><td class="number">87</td><td>    Map<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">88</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">89</td><td>      rows <span class="k3">=</span> <span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">90</td><td>      columns <span class="k3">=</span> <span class="n">16</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>      cellArray <span class="k3">=</span> <span class="k2">(</span>Cell<span class="k3">*</span><span class="k2">)</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span>rows <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span>Cell<span class="k3">*</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>      <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> rows<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">93</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">94</td><td>        cellArray<span class="k3">&lt;</span>i&gt; <span class="k3">=</span> <span class="k2">(</span>Cell<span class="k3">*</span><span class="k2">)</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span>columns <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span>Cell<span class="k3">*</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">95</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">96</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">97</td><td>&#160;</td></tr><tr><td class="number">98</td><td>    <span class="k1">void</span> draw<span class="k2">(</span>Player <span class="k3">*</span>player<span class="k2">)</span></td></tr><tr><td class="number">99</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">100</td><td>      <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> player-&gt;camera-&gt;y1<span class="k2">(</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span> i <span class="k3">&lt;</span><span class="k3">=</span> player-&gt;camera-&gt;y2<span class="k2">(</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</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>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> player-&gt;camera-&gt;x1<span class="k2">(</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span> j <span class="k3">&lt;</span><span class="k3">=</span> player-&gt;camera-&gt;x2<span class="k2">(</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">103</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">104</td><td>          cellArray<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>draw<span class="k2">(</span>player<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">106</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">107</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">108</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">109</td><td>&#160;</td></tr><tr><td class="number">110</td><td><span class="k1">class</span> Cell</td></tr><tr><td class="number">111</td><td><span class="k2">{</span></td></tr><tr><td class="number">112</td><td>  private:</td></tr><tr><td class="number">113</td><td>    <span class="k1">int</span> x<span class="k2">;</span></td></tr><tr><td class="number">114</td><td>    <span class="k1">int</span> y<span class="k2">;</span></td></tr><tr><td class="number">115</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>texture<span class="k2">;</span> <span class="c">// 32 x 32</span></td></tr><tr><td class="number">116</td><td>&#160;</td></tr><tr><td class="number">117</td><td>  public:</td></tr><tr><td class="number">118</td><td>    Cell<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tile<span class="k2">)</span></td></tr><tr><td class="number">119</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">120</td><td>      texture <span class="k3">=</span> tile<span class="k2">;</span></td></tr><tr><td class="number">121</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">122</td><td>&#160;</td></tr><tr><td class="number">123</td><td>    <span class="k1">void</span> draw<span class="k2">(</span>Player <span class="k3">*</span>player<span class="k2">)</span></td></tr><tr><td class="number">124</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">125</td><td>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>texture, buffer, <span class="n">0</span>, <span class="n">0</span>, x <span class="k3">-</span> player-&gt;camera-&gt;x1<span class="k2">(</span><span class="k2">)</span>, y <span class="k3">-</span> player-&gt;camera-&gt;y1<span class="k2">(</span><span class="k2">)</span>, texture-&gt;w, texture-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">126</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">127</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">128</td><td>&#160;</td></tr><tr><td class="number">129</td><td><span class="k1">class</span> Player</td></tr><tr><td class="number">130</td><td><span class="k2">{</span></td></tr><tr><td class="number">131</td><td>&#160;</td></tr><tr><td class="number">132</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">133</td><td>&#160;</td></tr><tr><td class="number">134</td><td><span class="k1">class</span> Unit</td></tr><tr><td class="number">135</td><td><span class="k2">{</span></td></tr><tr><td class="number">136</td><td>  private:</td></tr><tr><td class="number">137</td><td>    <span class="k1">double</span> x<span class="k2">;</span></td></tr><tr><td class="number">138</td><td>    <span class="k1">double</span> y<span class="k2">;</span></td></tr><tr><td class="number">139</td><td>&#160;</td></tr><tr><td class="number">140</td><td>  public:</td></tr><tr><td class="number">141</td><td>    <span class="k1">bool</span> removeMe<span class="k2">;</span></td></tr><tr><td class="number">142</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">143</td><td>&#160;</td></tr><tr><td class="number">144</td><td><span class="k1">class</span> Effect</td></tr><tr><td class="number">145</td><td><span class="k2">{</span></td></tr><tr><td class="number">146</td><td>&#160;</td></tr><tr><td class="number">147</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">148</td><td>&#160;</td></tr><tr><td class="number">149</td><td><span class="k1">class</span> Projectile</td></tr><tr><td class="number">150</td><td><span class="k2">{</span></td></tr><tr><td class="number">151</td><td>&#160;</td></tr><tr><td class="number">152</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">153</td><td>&#160;</td></tr><tr><td class="number">154</td><td><span class="k1">class</span> GUI</td></tr><tr><td class="number">155</td><td><span class="k2">{</span></td></tr><tr><td class="number">156</td><td>&#160;</td></tr><tr><td class="number">157</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">158</td><td>&#160;</td></tr><tr><td class="number">159</td><td><span class="k1">class</span> ChatBox</td></tr><tr><td class="number">160</td><td><span class="k2">{</span></td></tr><tr><td class="number">161</td><td>&#160;</td></tr><tr><td class="number">162</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">163</td><td>&#160;</td></tr><tr><td class="number">164</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">165</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">166</td><td>&#160;</td></tr><tr><td class="number">167</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">168</td><td><span class="k2">{</span></td></tr><tr><td class="number">169</td><td>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">170</td><td>&#160;</td></tr><tr><td class="number">171</td><td>  deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">172</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">173</td><td><span class="k2">}</span></td></tr><tr><td class="number">174</td><td><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></td></tr><tr><td class="number">175</td><td>&#160;</td></tr><tr><td class="number">176</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">177</td><td><span class="k2">{</span></td></tr><tr><td class="number">178</td><td>  <span class="k1">int</span> depth, res<span class="k2">;</span></td></tr><tr><td class="number">179</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">180</td><td>  depth <span class="k3">=</span> <a href="http://www.allegro.cc/manual/desktop_color_depth" target="_blank"><span class="a">desktop_color_depth</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">181</td><td>  <span class="k1">if</span> <span class="k2">(</span>depth <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">182</td><td>    depth <span class="k3">=</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">183</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span>depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">184</td><td>  res <span class="k3">=</span> <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">800</span>, <span class="n">600</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">185</td><td>  <span class="k1">if</span> <span class="k2">(</span>res <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">186</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">187</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">188</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">189</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">190</td><td>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">191</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">192</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">193</td><td>  buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">800</span>, <span class="n">600</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">194</td><td><span class="k2">}</span></td></tr><tr><td class="number">195</td><td>&#160;</td></tr><tr><td class="number">196</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">197</td><td><span class="k2">{</span></td></tr><tr><td class="number">198</td><td>  <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">199</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Also, there&#39;s a problem with my dynamic allocation of the Cell pointer array. I&#39;ve never done that sort of thing before, so I have no idea what I&#39;m doing really.</p><p>Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Thu, 11 May 2006 10:08:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
</pre></div></div><p>

This is evil. If you want to save typing <tt>std::</tt> for every <tt>std::vector</tt>, use <tt>using std::vector;</tt> instead.<br />The whole concept of namespaces is to separate, which is totally circumvented by <tt>using</tt>, throwing it all in one pot again.</p><p>For your errors:</p><p>A forward declaration is no full-type declaration, and you may only perform operations that do not need a full-type (like declaring a pointer or a reference to that type). As soon as you start needing more information (like, dereferencing it, accessing a specific field etc.) about it, the compiler must already know the full type, which means that a forward declaration won&#39;t do any more.</p><p>Solutions to your problem:</p><p>a) Move all method definitions to a .cpp file, and include the full declarations of the types needed (like, if you have <tt>class Map;</tt> as forward declaration, <tt>#include &lt;map.hpp&gt;</tt>, assuming <tt>class Map</tt> is defined in <tt>map.hpp</tt>.</p><p>b) Move all method definitions to a place where the classes are already fully defined.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Thu, 11 May 2006 10:28:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
</pre></div></div><p>

This is not evil, it is perfectly valid and recommended, as long as you control the scope of the statement.  The basic rule of thumb is that <b>the using namespace foo; DECLARATION IS NOT SOMETHING YOU WANT TO DO IN A HEADER FILE</b> (if you need to do it in a header file, do it on a function by function basis.  Never just leave a using namespace statement in the global scope if you can help it.)  If you are using a lot of namespaced stuff in a header file, usually you enclose the using directive inside of the function scope to prevent unwanted namespace pollution.  This same argument goes for even the using std::vector statement, even though the using std::vector statement is considerably less problematic.</p><p>edit: using namespace std; in a cpp file is just fine as long as you don&#39;t care that it opens up hundereds of names into your current scope; you just don&#39;t want to force the entire std namespace on the user of a header file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Carrus85)</author>
		<pubDate>Thu, 11 May 2006 11:04:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Alternatively, you can use a temporary namespace like this to hide it in a header file:
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;vector&gt;</span>

<span class="k1">namespace</span> temporary <span class="k2">{</span>
    <span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>

    <span class="k1">class</span> Thing
    <span class="k2">{</span>
        vector<span class="k3">&lt;</span>int&gt; lookImAVector<span class="k2">;</span>
    <span class="k2">}</span><span class="k2">;</span>
<span class="k2">}</span>

<span class="k1">using</span> temporary::Thing<span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AngelChild)</author>
		<pubDate>Sun, 14 May 2006 17:44:05 +0000</pubDate>
	</item>
</rss>
