• Martes 12 de Noviembre de 2024, 21:09

Autor Tema:  Matrices Como Variable Global En Visual C++  (Leído 5342 veces)

avpf

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Matrices Como Variable Global En Visual C++
« en: Viernes 14 de Enero de 2005, 15:57 »
0
Buenas a todos!!
Tengo un problemilla con un programa que estoy realizando en visual c++. Para declarar una variable global, he de hacerlo en public: (public __gc class Form1 : public System::Windows::Forms::Form{int c;}). El problema que encuentro es que necesito declarar una matriz, que ocupe, por ejemplo [100], como global; pero me da un error que expone: "error C2697: 'Total' : se debe especificar explícitamente __gc o __nogc para una matriz declarada dentro de un tipo administrado"
Debido a esto, yo le coloco tanto el __gc como el __nogc y no funciona. También lo intento con __value pero no se resuelve el problema. Me da el siguiente problema: "error C3150: 'double' : '__gc' sólo se puede aplicar a una clase, estructura, interfaz, matriz o puntero".

Llevo ya tres dias con el mismo problema. ¿Alguien podría ayudarme???

Muchisimas gracias a todos y lo siento si no se entiende bien.

Un abrazo

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Matrices Como Variable Global En Visual C++
« Respuesta #1 en: Viernes 14 de Enero de 2005, 19:56 »
0
Hola  :hola:  

Realmente no se entiendo muy bien lo que preguntas o necesitas, quizas si pones la clase entera y donde quieres incluir la variable global.......
Quizas el fallo sea que no hayas inicializado la matriz recuerda que en la declaracion de la clase tienes que poner por ejemplo:

int matriz[100];

y luego en el constructor deberias inicializarla,normalmente con un bucle y todos los elementos a cero

Si puedes explicaclo un poco mejor con el codigo de la clase entre las etiquetas code le echare un vistazo.

un saludo  :hola:

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Matrices Como Variable Global En Visual C++
« Respuesta #2 en: Sábado 15 de Enero de 2005, 02:13 »
0
Hola.

No me ha quedado del todo claro lo que preguntas. Yo, para crear variables globales en un entorno orientado a objetos puro, lo que hago es meterlas en una clase que las envuelva, de esta manera:
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
//
// main.cpp
//

#using <mscorlib.dll>

using namespace System;        // String, Console

const int NUM = 10;

// Esta clase envuelve las variables globales
__gc public class Globales
{
public:
    static double numero;            // Un número en coma flotante.
    static Double matriz __gc[];    // Un array de flotantes.

    // Constructor estático que inicializa el array.
    static Globales()
    {
        matriz = __gc new Double[NUM];
    }
};

void main()
{
    Console::WriteLine("Acceso a variables globales:");

    Globales::numero = 2.4;

    Console::WriteLine(String::Concat("numero: ", Globales::numero.ToString()));

    for (int i=0; i<NUM; i++)
    {
        Globales::matriz[i] = i*12.34;
    }

    Console::WriteLine("matriz:");

    for (int i=0; i<NUM; i++)
    {
        Console::WriteLine(String::Concat(String::Concat("  ", i.ToString()), (Globales::matriz[i]).ToString()));
    }

    Console::ReadLine();
}
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Espero que te sirva de ayuda.

Un saludo.

Ruben3d

avpf

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Matrices Como Variable Global En Visual C++
« Respuesta #3 en: Viernes 21 de Enero de 2005, 15:33 »
0
Muchas gracias a los dos. Realmente, empezamos en septiembre el curso y nuestro profesor, como trabajo complementario, nos mandó programar ejercicios en visual c++ cuando todavía no hemos dado bien ni punteros, ni objetos. Por ello, aunque me había informado sobre esto y sobre las clases, no comprendía bien todo. Creo que por eso no podía explicarme bien, jeje, y ahora ya he podido terminar el trabajo. Muchas gracias por vuestra ayuda.
Un abrazo. :kicking: