Как передать объявление делегата в 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

person Agnel Kurian    schedule 17.06.2009    source источник
comment
Одно предложение состояло в том, чтобы переслать объявление MyArgs, но даже это не помогло. Может ли кто-нибудь помочь?   -  person Agnel Kurian    schedule 16.07.2009


Ответы (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 по умолчанию в покое, я ожидаю, что если вы столкнетесь с проблемой предварительных объявлений, использование пространства имен System; тоже бы в шапку :)

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

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

person RandomNickName42    schedule 18.07.2009