1

Вопрос по .net – Как переслать объявление делегата в C ++ / CLI?

Как?

Следующее не сработало:

delegate MyDelegate;
ref class MyDelegate;
delegate void MyDelegate;

Следующие работы для декларации:

public delegate void MyDelegate(Object ^sender, MyArgs ^args);

Но использование его в качестве предварительной декларации дает мне

error C3756: 'MyNameSpace::MyDelegate': delegate definition conflicts with an existing symbol
  • Одним из предложений было объявить MyArgs, но даже это не помогло. Может ли кто-нибудь помочь, пожалуйста?

    от Agnel Kurian
  • 1

    Эта работа для меня;

    stdafx.h:

    public delegate void Handler(bool isit);
    

    cli1.cpp:

    #include "stdafx.h"
    using namespace System;
    
    namespace MY {
       namespace Namespace
       {
           public ref class Objeks
           {
               public: Objeks() {}
               public: event Handler^ OnHandler;
               public: void __clrcall Runner(bool checkit)
               {
                  if(&Objeks::OnHandler != nullptr) 
                    OnHandler(checkit);
               }
           };
       }
    }
    

    Я оставил проект VS 2010 по умолчанию C ++ / CLI в основном один, и я ожидал бы, что если вы столкнетесь с проблемой предварительных деклараций, то используете систему пространств имен; пойдет в шапке тоже :)

    Может быть, вы не хотели использовать событие? Но, похоже, просто структура.

    Я добавил проверку ошибок после рассмотрения (Ошибка компиляции вызова делегата C ++ / CLI с использованием предиката с Array :: FindAll ()).