Вопрос по .net – Как переслать объявление делегата в C ++ / CLI?
Как?
Следующее не сработало:
<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
ответ
Эта работа для меня;
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 ()).
Похожие вопросы
Одним из предложений было объявить MyArgs, но даже это не помогло. Может ли кто-нибудь помочь, пожалуйста?