Red de conocimiento informático - Computadora portátil - Los miembros de la clase de envío del socket C++ están confusos, por favor orientenme.

Los miembros de la clase de envío del socket C++ están confusos, por favor orientenme.

Hay varias preguntas:

Primero, sizeof no se usa de esta manera. sizeof() se usa para calcular el tamaño de un tipo de datos como sizeof(CSendPackage); Para calcular el tamaño de una cadena, debes usar funciones como strlen().

En segundo lugar, algunos miembros de datos de CSendPackage no se pueden enviar. Para este punto, puede consultar el constructor de copia de la clase.

En pocas palabras, cuando hay una matriz dinámica en una clase, si desea copiar la clase, no puede simplemente usar el signo igual de asignación (=). Por supuesto,

memcpy(&pkg.subs, &subs,sizeof(subs));Esto es aún más inaceptable.

subs.m_SubsID="123456"; A partir de esta oración, puede saber que .m_SubsID es un tipo de cadena o Cstring. En este tipo, se utiliza una matriz dinámica para almacenar datos de cadena. solo ocupa cuatro bytes. Hay un puntero a una cadena en él. Cuando envía

pkg, no enviará los datos señalados por todos los punteros en el paquete.