У меня есть класс-оболочка C ++ / CLI для взаимодействия между C # и собственным C ++.Я получаю странную ошибку, связанную с System.Nullable
.Я понимаю, что для базовых типов System.Nullable<T>
эквивалентно T?
.Поэтому я делаю это:
C #:
public int? RoboticsArmRotation {
get { return mRobotics.ArmRotation; }
}
C ++ / CLI, интерфейс:
virtual property System::Nullable<int>^ ArmRotation{ System::Nullable<int>^ get() = 0; }
C ++ / CLI, конкретный класс:
virtual property System::Nullable<int>^ ArmRotation {
System::Nullable<int>^ get() {
boost::optional<int> value = m_pNativeInstance->getArmRotation();
return value.is_initialized()? gcnew System::Nullable<int>(value.get()) : gcnew System::Nullable<int>();
}
}
Но я получаю ошибку компиляции заголовка.Приведение к int?
решает это, но меня беспокоит то, что он говорит System.ValueType
, когда я определил свой nullable как ссылку.Могу ли я покинуть актерский состав и продолжить или я делаю что-то не так?