1

プログラムの C コンパイラに、特定の構造が他の構造と同じであることを伝える方法を見つける必要があります (定義は同じです)。キャスティングで十分だと思いましたが、それは良い考えではないでしょうか?

私が 1 つの構造体だけを使用していない理由は、構造体が非常に重いフレームワーク クラスで定義されており、その構造体の使用を必要とするクラスをインポートする独自のさまざまなクラスがたくさんあるため.hです。

では、可能であれば、それらが同一であると仮定して、 をStruct A必要とする関数に使用できるコンパイラーをどのように伝えることができますか?Struct B


これを非常に具体的にするために、私の場合、約 14 のクラスがアクセスして利用するシングルトンがあります。シングルトンの一部の関数は、他のクラスと連携して機能し、特定のインポート用のリソースとデータを提供します。その 1 つが MapKit フレームワークです。私が利用してきた MapKit フレームワーク (特に MKUserLocation.h) 内には多くの構造体がありますが、他の多くのクラスをインポートし、定義に多くを追加します。

私にとっての具体的な例は、CLLocationCoordinate2D を使用することです。これは、14 個のクラスすべてが MapKit フレームワークからインポートされないように、シングルトンで再作成する必要がありました。それはただ過剰に思えます。

これをすべて機能させる方法は知っていますが、すべてにキャストまたはインポートする以外に、これに対する適切な解決策があるはずです。

4

1 に答える 1

0

ある構造体から別の構造体に変換するグローバル関数を単純に記述できますか?

void OneStructToAnotherStruct( struct FromStruct* from, struct ToStruct* to )
{
   to->x = from->x;
   to->y = from ->y;
   to->z = from->z;
}
于 2012-12-13T22:08:43.403 に答える