Использование события в управляемом и неуправляемом коде - PullRequest
1 голос
/ 18 марта 2019

В основном я работал над неуправляемым кодом, недавно для своей работы мне пришлось использовать проекты 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

Может кто-нибудь помочь мне, как я могу решить эту проблему?

...