Вызов c # из c ++: как передать nullptr в DateTime? - PullRequest
6 голосов
/ 31 марта 2011

В сборке c # я получил функцию, принимающую в качестве параметра обнуляемый DateTime:

public void DoSomething(DateTime? timestamp);

Теперь я хочу вызвать этот метод из c ++ / cli:

MyClass->DoSomething(nullptr);

Это не скомпилируется. Вместо этого компилятор c ++ выведет сообщение об ошибке, которое невозможно преобразовать в nullptr в System :: Nullable.

Так как мне передать nullptr из c ++ в обнуляемый DateTime?

Ответы [ 2 ]

10 голосов
/ 31 марта 2011
4 голосов
/ 31 марта 2011

Nullable - это тип значения , и C ++ / CLI не предоставляет для него магию времени компиляции.Вам нужно пройти явный маршрут:

System::Nullable<System::DateTime> dtnull;
MyClass->DoSomething(dtnull);

Конечно, вы также можете использовать временный здесь:

MyClass->DoSomething(System::Nullable<System::DateTime>());
...