<div dir="ltr">Hola Marcelinux,<br><div class="gmail_extra"><br></div><div class="gmail_extra">Para agrupar entidades, puedes usar espacios denominados (namespaces, en inglés), aunque la preparación es básicamente la misma que has hecho, excepto que creas tu propio ámbito. Por ejemplo,</div><div class="gmail_extra"><br></div><div class="gmail_extra">// main.cpp</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">namespace ns</div><div class="gmail_extra">{</div><div class="gmail_extra">int global1;</div><div class="gmail_extra">float global2;</div><div class="gmail_extra">std::string global3;</div><div class="gmail_extra">}</div><div class="gmail_extra"><br></div><div class="gmail_extra">int main()<br>{</div><div class="gmail_extra"><div class="gmail_extra">  ns::global1 = 123;</div><div class="gmail_extra">  ns::global2 = 123.45f;</div><div class="gmail_extra">  ns::global3 = "cadena global en 'ns'";</div><div class="gmail_extra"><br></div><div class="gmail_extra">  std::cout << "global1 = " << ns::global1 << std::endl;</div><div class="gmail_extra">  std::cout << "global2 = " << ns::global2 << std::endl;</div><div class="gmail_extra">  std::cout << "global3 = " << ns::global3 << std::endl;</div></div></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">  Clase miClase;</div><div class="gmail_extra">  miClase.mostrar();</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">  return 0;</div><div class="gmail_extra">}</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">// clase.cpp</div><div class="gmail_extra"><br></div><div class="gmail_extra">namespace ns</div><div class="gmail_extra">{</div><div class="gmail_extra">extern int global1;<br></div><div class="gmail_extra"><div class="gmail_extra">extern float global2;</div><div class="gmail_extra">extern std::string global3;</div><div class="gmail_extra">}</div><div class="gmail_extra"><br></div><div class="gmail_extra">void Clase::mostrar()</div><div class="gmail_extra">{</div><div class="gmail_extra">  std::cout << "Valor de global1 desde el espacio denominado: " << ns::global1 << std::endl;</div><div class="gmail_extra">  std::cout << "Valor de global2 desde el espacio denominado: " << ns::global2 << std::endl;</div><div class="gmail_extra">  std::cout << "Valor de global3 desde el espacio denominado: " << ns::global3 << std::endl;</div><div class="gmail_extra">}<br></div><div><br></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Si de verdad quieres usar una clase, entonces sólo debes definir los miembros como estáticos; esto es,</div><div class="gmail_extra"><br></div><div class="gmail_extra">// main.cpp</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">int Clase::global1;</div><div class="gmail_extra">float Clase::global2;</div><div class="gmail_extra">std::string Clase::global3;</div><div><br></div><div><div>int main()</div><div>{<br><div>  Clase::global1 = 123;</div><div>  Clase::global2 = 123.45f;</div><div>  Clase::global3 = "cadena global";</div><div>  std::cout << "global1 = " << Clase::global1 << std::endl;</div><div>  std::cout << "global2 = " << Clase::global2 << std::endl;</div><div>  std::cout << "global3 = " << Clase::global3 << std::endl;</div></div></div><div><div><br></div><div>  Clase miClase;</div><div>  miClase.mostrar();</div><div><br></div><div>  return 0;</div><div>}</div><div><br></div><div><br></div><div>// clase.cpp</div><div><br></div></div><div><div>void Clase::mostrar()</div><div>{</div><div>  std::cout << "Valor de global1 desde la clase: " << Clase::global1 << std::endl;</div><div>  std::cout << "Valor de global2 desde la clase: " << Clase::global2 << std::endl;</div><div>  std::cout << "Valor de global3 desde la clase: " << Clase::global3 << std::endl;</div></div><div>}</div><div><br></div><div><br></div><div>Espero que esto te sirva.</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-04-24 15:32 GMT-04:00 marcelinux <span dir="ltr"><<a href="mailto:marcelinator@gmail.com" target="_blank">marcelinator@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hola.<br>
La idea es tener una clase con miembros accesibles en cualquier archivo de la aplicación.<br>
<br>
Imaginemos que tengo una aplicación en la que necesitaré unas variables globales.<br>
Cuando digo globales, no me refiero al mismo archivo, sino a todos los archivos de la aplicación.<br>
Por ejemplo: En el archivo main.cpp declaro unas variables globales.<br>
En otro archivo donde se define una clase, quiero usar aquellas globales.<br>
Para ello, declararía las globales con extern.<br>
Lo haría más o menos así:<br>
<br>
Archivo main.cpp<br>
// Usar variables en otro archivo<br>
#include <iostream><br>
#include <string><br>
#include "clase.h"<br>
<br>
// Definir las variables globales<br>
int global1;<br>
float global2;<br>
std::string global3;<br>
<br>
int main()<br>
{<br>
    std::cout << "Asignar valores a las variables globales." << std::endl;<br>
    global1 = 123;<br>
    global2 = 123.45;<br>
    global3 = "cadena global";<br>
    std::cout << "global1 = " << global1 << std::endl;<br>
    std::cout << "global2 = " << global2 << std::endl;<br>
    std::cout << "global3 = " << global3 << std::endl;<br>
<br>
    // Accedemos a la clase donde operaremos con las variables globales<br>
    Clase miClase;<br>
    miClase.mostrar();<br>
<br>
    return 0;<br>
}<br>
<br>
Archivo clase.h<br>
#ifndef CLASE_H<br>
#define CLASE_H<br>
// Clase.<br>
// Mostrará las variables globales externas<br>
class Clase<br>
{<br>
    public:<br>
        void mostrar();<br>
};<br>
#endif // CLASE_H<br>
<br>
Archivo clase.cpp<br>
// Definición de Clase<br>
#include <iostream><br>
#include <string><br>
#include "clase.h"<br>
<br>
extern int global1;<br>
extern float global2;<br>
extern std::string global3;<br>
<br>
void Clase::mostrar()<br>
{<br>
    std::cout << "Valor de global1 desde la clase: " << global1 << std::endl;<br>
    std::cout << "Valor de global2 desde la clase: " << global2 << std::endl;<br>
    std::cout << "Valor de global3 desde la clase: " << global3 << std::endl;<br>
    return;<br>
}<br>
<br>
Y la pregunta es:<br>
¿Cómo podría "agrupar" esas variables en una "struct" o "class"?<br>
Si hago algo como extern class varGlobales;<br>
el compilador me devuelve un error: a storage class can only be specified for objects and functions<br>
<br>
Mi compilador es g++ (Debian 5.3.1-14) 5.3.1 20160409<br></blockquote></div></div></div>