In einem C++ Programm Ich habe zwei Klassen (structs) wieBind Mitglieder verschiedener Klassen
struct A
{
int x;
double y;
// other members
};
struct B
{
int x;
double y2;
// other members
};
Ich mag irgendwie zu „binden“, um die entsprechenden Elemente, z.B. A::x
bis B::x
und A::y
bis B::y2
. Mit "binden" meine ich die Fähigkeit, einen Verweis auf die gebundene Variable zu erhalten, zum Beispiel bei einem Mitglied der Klasse A
könnte ich es dem Wert des entsprechenden B
Mitglieds zuweisen.
Sobald ich solche Bindung habe, würde ich gerne eine Bind-Tabelle oder etwas ähnliches, das ich über iterieren könnte. Dies würde zum Beispiel das Kopieren der entsprechenden Felder von A a;
zu B b;
wie CopyBound(a, b, bind_table);
ermöglichen, aber wahrscheinlich auch einige andere Dinge tun, die nicht auf Copy
Schnittstelle beschränkt sind.
Das Problem mit dieser bind_table ist, dass ich statische Typisierung und die bind_table müsste in diesem Fall verschiedene Typen enthalten. Zum Beispiel würde eine Tabelle von Zeigern zu Klassenmitgliedern &A::x
und &A::y
enthalten, aber sie sind von unterschiedlichem Typ, also kann ich sie nicht einfach in ein Array setzen.
Irgendwelche Ideen, wie dies bequem implementiert werden kann, mit so viel Kompilierzeit Typprüfung wie möglich?
Bitte klären, ob dieses C oder C++ zumindest ist. – Jon
@ Jon: Ich spreche über C++, aber wahrscheinlich könnte auch einige C-Style-Lösung gehen –
Ihre Frage ist unklar. Der bindende Teil ist einfach (wenn du meinst, was ich denke, du meinst), aber es ist nicht klar, was du willst, um den "Bindetisch" zu machen oder zu tun. Felder von 'A a' nach' B b' kopieren? Wenn 'a' und 'b' bereits gebunden sind, dann ist das Kopieren nicht notwendig, und wenn sie nicht sind, hat es nichts mit der Bindung zu tun. – Beta