Buenas tardes a tod@s :)

A ver si alguien puede echarme una mano.
Estoy intentando desarrollar una aplicación en VC++ .NET y veo que la sintaxis entre C/C++ estandar y VC++.NET varia algo...
La mayoría de problemas los he ido resolviendo poco a poco con la ayuda del MDSN/Google, pero he llegado a un punto que no encuentro una resolución a lo que quiero hacer...

Se trata de una estructura:

Código: Seleccionar todo

value struct STARTUPINFO
{
	public:
        Int32 cb;
        char* lpReserved;
        char* lpDesktop;
        char* lpTitle;
        Byte stuff[52];
};
Obviamente no me acepta la declaración de un array "Byte stuff[52]", puesto que se trata de un array nativo y estoy en código `administrado` por el .NET. He intentado declararlo como sigue:

Código: Seleccionar todo

value struct STARTUPINFO
{
	public:
        Int32 cb;
        char* lpReserved;
        char* lpDesktop;
        char* lpTitle;
        //Byte stuff[52];
        array<Byte>^ stuff = gcnew array<Byte>(52);
};
pero nuevamente, esta claro que no me deja inicializar el array en una definición de la estructura... pero lo curioso es que "array<>" tampoco me deja usarlo diciéndome que no se puede usar una matriz de tipo "C++/CLI" (pero no se supone que estoy en código manejado???? O_o), y ya no se que más probar... menudo lío xDD

A ver si alguno puede explicármelo un poco, por favor! :(

Gracias de antemano!
Y saludos!
[ Lo importante no es el final, sino el camino recorrido ]
2 Cosas :
A) STARTUPINFO ya lo tienes declarado en Windows.h

B) Luego, tenes varias opciones para mezclar codigo nativo con codigo administrado.

B1) No puedes inicializar dentro de la estructura un atributo de instancia, por lo cual, puedes "arreglarlo" si no lo inicializas ... es decir usando :
array<BYTE>^ stuff;

B2) Puedes usar declarar el atributo como estatico, para ello debes anteponer la palabra reservada "static" y ahi si lo puedes inicializar, pero ten en cuenta que si creas objetos de esa clase, vas a tener un atributo estatico que no va a ser visible "dentro del objeto" (me enrollé con la explicacion ), pero si insistes, usalo asi:
static array<BYTE>^stuff = gcnew array<Byte>(52);


Suerte
Imagen
Responder

Volver a “C/C++”