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

1

Как?

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

<code>delegate MyDelegate;
ref class MyDelegate;
delegate void MyDelegate;
</code>

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

<code>public delegate void MyDelegate(Object ^sender, MyArgs ^args);
</code>

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

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

Ваш Ответ

1   ответ
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 ()).

Похожие вопросы