Я пытаюсь использовать делегат в C++/CLI, я говорил this видео, которое находится в C#Делегаты в C++/CLI
#include <iostream>
#include"stdafx.h"
using namespace System;
using namespace System::Collections::Generic;
public ref class Employee
{
public:
Employee() {};
~Employee() {};
public:
int ID;
String ^name;
int Salary;
int Experience;
public: static void Promote(List<Employee^>^ members,promoteDelegate^ promo)
{
for each (Employee ^emp in members)
{
if(promo(emp))
Console::WriteLine("{0} is Promoted", emp->name);
}
}
};
delegate bool promoteDelegate(Employee^ emp);
ref class MyClass
{
public:
MyClass() {};
~MyClass() {};
static bool func(Employee^ emp)
{
return (emp->Salary >= 5000);
}
int main(array<System::String ^> ^args)
{
List<Employee^> ^Employee_List = gcnew List<Employee^>;
Employee^ emp1 = gcnew Employee;
emp1->name = "Ajanth"; emp1->ID = 0;emp1->Salary = 50000;emp1->Experience = 3;
Employee^ emp2 = gcnew Employee;
emp2->name = "Aman"; emp2->ID = 1;emp2->Salary = 45000;emp2->Experience = 9;
Employee^ emp3 = gcnew Employee;
emp3->name = "Ashish"; emp3->ID = 2;emp3->Salary = 60000;emp3->Experience = 4;
Employee_List->Add(emp1);
Employee_List->Add(emp2);
Employee_List->Add(emp3);
promoteDelegate ^promoDel = gcnew promoteDelegate(func);
Employee::Promote(Employee_List, promoDel); //Error here
return 0;
}
};
Я получаю ошибку компиляции, как показано ниже
«Employee :: Promote» не принимает 2 аргумента. функция «Employee :: Promote» не может быть вызвана с данным списком аргументов.
типы аргументов являются: (System :: Подборки :: Общий :: Список ^, promoteDelegate^