указанная функция не соответствует типу делегата void (void) - PullRequest
0 голосов
/ 27 июня 2011
Error C3352: 'void ServerClass::ActionMethod(int,int,System::String ^)' : 

указанная функция не соответствует типу делегата 'void (void)' D: \ westside \ NetSockets \ win32project \ Win32.cpp 70 1 win32project

Короче говоря, приложение win32 использует библиотеку C #. Когда приложение win32 вызывает метод конструктора в библиотеке C #, появляется ошибка выше. Ниже приведен код. Я не уверен, что мне не хватает.

код приложения win32

заголовочный файл

public ref class ServerClass
{
NetEvents::NetEventArgs^ args;
NetSockets::NetSocket^ server;
public:
void ActionMethod(int iCommand, int iClientIndex, System::String^ message);
void StartServer();
};

исходный файл

void ServerClass::ActionMethod(int iCommand, int iClientIndex, System::String^ message)
{

}

void ServerClass::StartServer()
{   
server = gcnew NetSockets::NetSocket(gcnew System::Action(this, &ServerClass::ActionMethod1));
}

код библиотеки C #

namespace NetSockets
{
public class NetSocket
{
    Action<int,int,string> actClient;

    public NetSocket(Action<int, int, int> action)
    {

    }

    public NetSocket(Action<int, int, string> action)
    {
        this.actClient = action;
    }
}
}

1 Ответ

2 голосов
/ 27 июня 2011

Делегат System.Action - это тип делегата без параметров, который возвращает void.

Как говорится в сообщении об ошибке, ваша функция не соответствует этому.

Вам необходимо использоватьдругой тип делегата, например Action<int, int, string>.

...