2009-06-17 11 views
1

Comment?Comment puis-je transférer un délégué en C++/CLI?

Ce qui suit ne fonctionne pas:

delegate MyDelegate; 
ref class MyDelegate; 
delegate void MyDelegate; 

Les travaux suivants pour la déclaration:

public delegate void MyDelegate(Object ^sender, MyArgs ^args); 

Mais l'utiliser comme une déclaration avant me donne

error C3756: 'MyNameSpace::MyDelegate': delegate definition conflicts with an existing symbol 
+0

Une suggestion consistait à renvoyer déclarer MyArgs mais même cela n'a pas aidé. Quelqu'un pourrait-il m'aider? –

Répondre

1

de ce travail pour moi ;

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); 
      } 
     }; 
    } 
} 

Je reste la valeur par défaut VS 2010 projet C++/CLI seul pour la plupart, je me attends à ce que si vous allez par le problème des déclarations anticipées, le système d'espace de noms utilisant; irait dans l'en-tête est aussi :)

Peut-être que vous ne vouliez pas utiliser l'événement? Mais il semble simplement la structure.

J'ai ajouté la vérification d'erreur après avoir considéré (Error Compiling C++/CLI Delegate call using Predicate with Array::FindAll()).