<div dir="ltr">Hola Antonio,<div class="gmail_extra"><br></div><div class="gmail_extra">Sabes que la clase derivada heredan los miembros de la clase base, pero recuerda que debes tener en cuenta los permisos para acceder a tales miembros: privado, protegido, o público. Dicho esto, un ejemplo sencillo sería,</div><div class="gmail_extra"><br></div><div class="gmail_extra">class cNivel<br>{<br>protected:<br>  int mapa[100][100];</div><div class="gmail_extra"><br></div><div class="gmail_extra">public:<br>  cNivel() {}<br>};</div><div class="gmail_extra"><br></div><div class="gmail_extra">class cNivel01 : public cNivel<br>{<br>public:<br>  cNivel01() : cNivel() {}<br>};</div><div class="gmail_extra"><br></div><div class="gmail_extra">Ahora 'cNivel01' tiene permiso para acceder a 'mapa' directamente.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Podríamos extender la lógica para poder inicializar el array usando la lista inicializadora del constructor de la clase base. Por ejemplo,</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">class cNivel</div><div class="gmail_extra">{</div><div class="gmail_extra">protected:</div><div class="gmail_extra">  int mapa[100][100];</div><div class="gmail_extra"><br></div><div class="gmail_extra">public:</div><div class="gmail_extra">  cNivel() : mapa{ {1, 2, 3, 4}, {-1,-2,-3,-4} } {}</div><div class="gmail_extra">};<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">class cNivel01 : public cNivel</div><div class="gmail_extra">{</div><div class="gmail_extra">public:</div><div class="gmail_extra">  cNivel01() : cNivel() {}</div><div class="gmail_extra">};</div><div><br></div><div>No nos podemos referir directamente a 'mapa' en la lista inicializadora del constructor de la clase derivada, 'cNivel01', porque aún no existe. De hecho, el objeto 'cNivel' aún no se ha construido completamente hasta que no nos adentremos en el cuerpo de la función del constructor, 'cNivel01()'.</div><div><br></div><div>Si quieres algo más sencillo, puedes usar las plantillas estándares, como 'std::array<>'. Por ejemplo,</div><div><br></div><div>class cNivel<br></div><div><div class="gmail_extra">{</div><div class="gmail_extra">protected:</div><div class="gmail_extra">  std::array<std::array<int,100>, 100> mapa;</div><div class="gmail_extra"><br></div><div class="gmail_extra">public:</div><div class="gmail_extra">  cNivel() : mapa{ std::array<int, 100>{1, 2, 3, 4}, std::array<int, 100>{-1,-2,-3,-4} } {}</div><div class="gmail_extra">  cNivel(const std::array<std::array<int, 100>, 100> &m) : mapa(m) {}</div><div class="gmail_extra">};<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">class cNivel01 : public cNivel</div><div class="gmail_extra">{</div><div class="gmail_extra">public:</div><div class="gmail_extra">  cNivel01() : cNivel( { std::array<int, 100>{4,5,6,7}, std::array<int, 100>{1,2,3,4} } ) {}</div><div class="gmail_extra">};<br><br></div></div><div class="gmail_extra"><br></div><div>Espero que esto te oriente.</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Steven</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-10-19 20:20 GMT-04:00 Antonio Escalante <span dir="ltr"><<a href="mailto:gravitonio@gmail.com" target="_blank">gravitonio@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hola grupo,<br><br>Tengo una duda sobre arrays en c++ me gustaria plantearos.<br><br>Siguiendo el curso de programacion de videojuegos de Nacho Cabanes (<a href="http://nachocabanes.com/videojuegos/manicminer/miner11.php" target="_blank">http://nachocabanes.com/<wbr>videojuegos/manicminer/<wbr>miner11.php</a>) tenemos una clase cNivel con toda la funcionalidad basica para todos los niveles. Se crean las clases ( cNivel01, cNivel02 etc ) para cada nivel que heredan todas de cNivel.<br><br>cNivel tiene 2 arrays bidimensionales, uno que seria el backup del mapa para restaurarlo si nos matan durante el juego y otro que es una copia y se modifica durante el juego. Ambos tal que int mapa[ancho][alto]; ( o incluso plantear un solo array que no se modifica durante el juego )<br><br>La idea es que la clase de cada nivel ( cNivel01, cNivel02 ...) puedan redefinir ese array backup segun su mapa pero no consigo hacerlo por problemas de redefinicion de variable<br><br>Alguien podria explicarme como y donde se declara e inicializa un array en una clase base y como se sobreescribe en la clase derivada? Se puede iniciar el array al completo<br> ( valores entre llaves { , , , } ) o habria que hacerlo elemento a elemento ( [0][0] = 5 [0][1] = 5 ... )<br><br>Muchisimas gracias a todos. <br></div>
</blockquote></div><br></div></div>