Inheritance: child in parent casten?

Hallo,

ich habe eine Tabelle ‘Person’ entworfen und diese mittels INHERIT an eine Tabelle ‘Kontaktperson’ mit zusätzlichen Einträgen vererbt. Ich greife mittels C++ via libpqxx auf die Tabellen zu. Dabei versuche ich die bestehenden Tabellen mit zwei Wrapper-Klassen so gut wie möglich abzubilden:

class Kontaktperson : public Person

Die virtuelle Schnittstellen-Funktion Kontaktperson::writeDatabase() schreibt im ersten Schritt die Tabelle ‘Person’ mittels Aufruf von Person::writeDatabase():

z.B.: INSERT INTO Person (…) VALUES (…);

In einem zweiten Schritt soll die Tabelle ‘Person’ durch Hinzufügen fehlender Einträge innerhalb Kontaktperson::writeDatabase() in eine ‘Kontaktperson’ überführt werden.

Nur: wie lässt sich das elegant machen? Geht es überhaupt?

Vielen Dank für jeden Hinweis!!

Martin

Nachdem mein Problem offenbar doch ein bisschen exotisch zu sein scheint, habe ich nun den folgenden - für meine Anforderungen praktikablen - Workaround der Nase nach erfolgreich durchgeführt:

class Kontaktperson : public Person

...

Kontaktperson::writeDatabase() {
[INDENT]...

dbase->sendQuery("INSERT INTO Kontaktperson (...) VALUES (...) RETURNING id");

// wichtig ist hierbei, dass alle NOT NULL Einträge in 'Person'
// mit sinnvollen Defaultwerten bereits bei der Definition
// der Tabelle vorbesetzt wurden

setStatus( INSERT, false);
setStatus( UPDATE, true );

Person::writeDatabase();

[/INDENT]
}

und weiter:

Person::writeDatabase() {
[INDENT]...

if ( status( UPDATE ) )
  dbase->sendQuery("UPDATE Person set (...) WHERE id = (...)");

...
[/INDENT]

}

Also gerade umgekehrt zum ursprünglichen Ansinnen: zuerst ‘Kontaktperson’ definieren und erst im zweiten Zug die entsprechenden Einträge in ‘Person’ updaten.

Nichtsdestotrotz würde es mich brennend interessieren, ob es eine Lösung zu meinem Ausgangsproblem gibt. Dies entspräche von der Vorgehensweise eher dem klassischen objektorientierten Ansatz.

Martin