¿Entiendes los punteros de función miembro? ¿Se puede convertir a Void*? ¿Por qué?

        Un puntero de función miembro es un puntero a una función miembro. Dado que el puntero de función miembro necesita proporcionar la dirección de un objeto cuando se llama, su tipo es diferente del de un puntero de función normal. En C++, cuando se utilizan punteros de funciones miembro, es necesario utilizar un puntero o una referencia a un objeto.

        Los punteros de funciones miembro se pueden convertir en void*, pero esta conversión no es segura. Void es un tipo de puntero general que puede apuntar a cualquier tipo de datos, mientras que un puntero de función miembro es un tipo específico de puntero que apunta a una función miembro específica. Por lo tanto, convertir un puntero de función miembro en nulo puede provocar un error de tipo o una infracción de acceso.

        Al realizar la conversión de tipos de puntero, debe intentar evitar el uso de void* y, en su lugar, utilizar tipos más específicos para garantizar la seguridad de los tipos. Si necesita pasar un puntero de función miembro como parámetro o devolver un valor, puede considerar usar una plantilla de función o std::function para encapsular el puntero de función miembro.

Supongo que te gusta

Origin blog.csdn.net/SYC20110120/article/details/133203798
Recomendado
Clasificación