Как переслать объявление делегата в C ++ / CLI? - PullRequest
1 голос
/ 17 июня 2009

Как?

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

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

1 Ответ

1 голос
/ 18 июля 2009

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

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 с использованием предиката с Array :: FindAll () ).

...