如何在C ++ / CLI中转发声明委托?

时间:2009-06-17 08:50:47

标签: .net syntax c++-cli delegates forward-declaration

如何?

以下不起作用:

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 个答案:

答案 0 :(得分: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项目,我希望如果你经历了前向声明的麻烦,那就使用命名空间系统;也会进入标题:)

也许你不想使用活动?但它似乎只是结构。

我在考虑(Error Compiling C++/CLI Delegate call using Predicate with Array::FindAll())后添加了错误检查。