SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: avpf en Viernes 14 de Enero de 2005, 15:57
-
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
-
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:
-
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
-
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: