У меня есть класс, определенный ниже:
ref class myClass
{
PictureBox^ pic2;
public:
void setPic2() { pic2 = gcnew PictureBox; }
template<typename UnaryOperator>
void setPic2Click(Form^ x, UnaryOperator op) { pic2->Click += gcnew EventHandler(x, op); }
};
И в моем классе Windows формы:
namespace testProject
{
public ref class Form1 : public System::Windows::Forms::Form
{
void Form1_Load(Object^ sender, EventArgs^ e)
{
rect1.setPic2();
rect1.setPic2Click(this, std::bind1st(std::mem_fun(&Form1::pic2_Click), this));
}
void pic2_Click(Object^ sender, EventArgs^ e)
{
// do something...
}
При компиляции генерируется эта ошибка, связанная с вызовом rect1.setPic2Click
...:
ошибка C3374: невозможно получить адрес 'testProject::Form1::pic2_Click'
, если не создан экземпляр делегата
По сути, я попытался инкапсулировать интерфейс Picturebox, создав метод экземпляра setPic2Click
. Это правильный подход? Любое предложение, как исправить эту ошибку?