Das Problem ist die allerletzte Zeile:
datum.FromOADate(d);
DateTime::FromOADate
ist eigentlich eine statische Elementfunktion dass kehrt a DateTime
Objekt. In C++ - Begriffen kann man es sich wie eine named constructor vorstellen.
Es tut nicht initialisieren datum
wie eine normale Member-Funktion würde. Was dich verwirrt, ist die Tatsache, dass C++ allows you to call static members using an instance of the object. In C# wäre das nicht möglich, und Sie hätten einen Kompilierungsfehler erhalten, der Sie auf das Problem aufmerksam gemacht hätte.
Schreiben Sie den Code wie folgt, und Sie werden in Ordnung sein:
COleDateTime m_dt;
m_ctrlDateTime.GetTime(m_dt);
double d = dt.m_dt;
System::DateTime datum = System::DateTime::FromOADate(d);
Sie könnten auch Folgendes tun (aber es wäre ähnlich verwirrend sein):
COleDateTime m_dt;
m_ctrlDateTime.GetTime(m_dt);
double d = dt.m_dt;
System::DateTime datum;
datum = datum.FromOADate(d);
so etwas wie Need: Datetime jetzt = m_ctrlDateTime.GetTime (m_dt); – jdweng
@jdweng Wie würde das funktionieren? Die "GetTime" -Memberfunktion gibt keinen 'DateTime'-Wert zurück. Es gibt tatsächlich ein 'BOOL' zurück, was bedeutet, dass es sogar kompilieren könnte, indem es eine implizite Umwandlung durchführt, um den' DateTime' Konstruktor aufzurufen, der ein 'long' braucht. –
Warum brauchen Sie die Linie? – jdweng