1

如何?

以下没有工作:

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
4

1 回答 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 项目,我希望如果您遇到前向声明的麻烦,使用命名空间系统;也会进入标题的:)

也许你不想使用事件?但它似乎只是简单的结构。

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

于 2009-07-18T13:18:52.607 回答