В основном я работал над неуправляемым кодом, недавно для своей работы мне пришлось использовать проекты CLI / C ++.Некоторые из файлов являются неуправляемым кодом, поэтому, в том числе и я использую #pragma managed(push, off)
, я видел в полных неуправляемых кодах, которые мы использовали, событие и разделение в классах Ref.
event someHandler^ someEvent;
public delegate void someHandler(ManagedCpp::sharedPtr<std::string> ^);
Но теперь мне нужно создатьтакой же механизм для смеси управляемых и неуправляемых.Поэтому, когда я делал этот класс представления модели как управляемый, я не могу включить его в неуправляемый класс.
Управляемый класс, в котором я буду определять событие (я) и делегировать ...
public delegate void someHandler(ManagedCpp::sharedPtr<std::string> ^);
class ModelView{
managedCpp::sharedPtr ^ memberPtr
public:
event someHandler^ someEvent;
ModelView(){
memberPtr= gcnew managedCpp::sharedPtr<std::string>
}
//some other functions
// a getter() to get the memberPtr
// a setter() to set the value of memberPtr
}
Поэтому мне нужно включить этот класс в другие классы, которыми некоторые управляют, а другие неуправляют.
Когда я включаю в управляемый класс, он выдает ошибку.
error C3821: 'memberPtr': managed type or function cannot be used in an unmanaged function
Может кто-нибудь помочь мне, как я могу решить эту проблему?