Czy można napisać klasę lub strukturę C++, która jest w pełni zgodna z C struct. Z kompatybilności rozumiem wielkość obiektu i lokalizacji pamięci zmiennych. Wiem, że to zło używać *(point*)&pnt
lub nawet (float*)&pnt
(w innym przypadku, w którym zmienne są zmienne), ale uważają, że jest to naprawdę wymagane ze względu na wydajność. Nie logiczne jest używanie miliona razy na sekundę regularnego operatora odlewania.C++ Klasa lub Struct kompatybilność z C struct
Weźmy ten przykład
Class Point {
long x,y;
Point(long x, long y) {
this->x=x;
this->y=y;
}
float Distance(Point &point) {
return ....;
}
};
wersja C jest struct POD
struct point {
long x,y;
};
W jakim celu potrzebujesz tej zgodności? Czy chcesz przekazać dane binarne z programu C++ do programu c, czy chcesz przekazać obiekt C++ do funkcji c? – Dima
* "ale należy wziąć pod uwagę, że jest to naprawdę wymagane ze względu na wydajność.Nie logiczne jest używanie miliona razy na sekundę regularnego operatora odlewania." * Nie ma to dla mnie żadnego sensu. – GManNickG
@Dima: do funkcji C @GMan: metoda niepoprawna powinna określać operator odlewania typu punkt operatora() { punkt p; p.x = this-> x; p.y = this.y; return p; } Jednak będę używać tych punktów w dwóch przypadkach int wpisany, aby przekazać funkcję okna, aby znaleźć kursor pos. Typ Float jest wysyłany do OpenGL jako wierzchołki (gdy jest konwertowany na tablicę zmiennoprzecinkową), pierwsza jest wykonywana po jednej na każdą ramkę (350 razy/s), druga do 4 x obiektów rysowanych x 350. Będą używane w grze silnik. –