Es posible escribir una clase o estructura C++ que sea totalmente compatible con C struct. De la compatibilidad quiero decir el tamaño del objeto y la ubicación de la memoria de las variables. Sé que es malo utilizar *(point*)&pnt
o incluso (float*)&pnt
(en un caso diferente donde las variables son flotantes), pero consideran que es realmente necesario para el rendimiento. No es lógico usar un operador de conversión de tipo regular millones de veces por segundo.C++ Compatibilidad de clase o estructura con C struct
Tome este ejemplo
Class Point {
long x,y;
Point(long x, long y) {
this->x=x;
this->y=y;
}
float Distance(Point &point) {
return ....;
}
};
versión C es una estructura POD
struct point {
long x,y;
};
¿Con qué propósito quieres esta compatibilidad? ¿Desea pasar datos binarios de un programa C++ a un programa c, o desea pasar un objeto C++ a una función c? – Dima
* "pero considere que es realmente necesario para el rendimiento. No es lógico usar un operador de conversión de tipo regular millones de veces por segundo." * Esto no tiene sentido para mí. – GManNickG
@Dima: a la función C @GMan: método no malvado debe definir el operador de conversión de tipo punto de operador() { punto p; p.x = this-> x; p.y = this.y; return p; } Sin embargo, voy a utilizar estos puntos en dos casos int tipeado para pasar la función de ventanas para encontrar la posición del cursor. Float tipeado se envía a OpenGL como vértices (mientras se convierte en matriz flotante), primero se ejecuta uno por cada fotograma (350 veces/seg), otro es para 4 objetos x dibujados x 350. Se usarán dentro de un juego motor. –