none
une fonction trouvée qui n'est pas addressée correctement RRS feed

  • Question

  • bonjour,

    j'ai une fonction qui pose un problème de forme

    je vous met la déclaration et l'utilisation:

    la déclaration:

    #ifndef  WINRTL // Ligne 1
    #define  WINRTL
    
    namespace SpecificationLoader // Ligne 4
    {
    	using namespace System; // Ligne 6
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    
    	ref class WnRtl // Ligne 14
    	{
    	public:
    		WnRtl::WnRtl();
    		WnRtl::~WnRtl();
    		static void WnRtl::display_message( char* str);
    		static void* interface_doevents_func(void) ;
    		array< System::Char^, 1>^ exe_fps;
    	};
    };
    #endif


    qui est utilisée dans une méthode:

    	void search::interface_doevents( void)
    	{
    		if( *WnRtl::interface_doevents_func != nullptr)
    			WnRtl::interface_doevents_func();
    	}
    

    et qui provoque de la part du compilateur:

    1>..\..\..\..\..\..\WordNet\src\lib\search.cpp(2462): error C3374: impossible de récupérer l'adresse de 'SpecificationLoader::WnRtl::interface_doevents_func' à moins de créer une instance de délégué
    


    Jean Noël Martin

    mercredi 7 octobre 2015 14:16

Réponses

  • je suis revenu à la première formulation et ça  a résolu le problème:

    static void(*WnRtl::interface_doevents_func)() ;

    et j'ai gardé cette forme là dans l'implémentation.

    et le code a compilé sous la forme ci dessous:

    void search::interface_doevents( void)
    	{
    		if( (*WnRtl::interface_doevents_func) != nullptr)
    			WnRtl::interface_doevents_func();
    	}


    Jean Noël Martin


    • Marqué comme réponse JeanNoel53 mercredi 7 octobre 2015 14:46
    • Modifié JeanNoel53 mercredi 7 octobre 2015 14:49
    mercredi 7 octobre 2015 14:46