Dưới đây là thông báo lỗi chính xác trên biên soạn:Bắt lỗi C3352 (chức năng được chỉ định không phù hợp với loại đại biểu), mặc dù chức năng dường như để phù hợp với đại biểu loại
lỗi C3352: 'MyNameSpace đôi :: MyRefClass :: MyFunction (const std :: vector < _Ty> &, std :: vector < _Ty> &, void *) ': hàm được chỉ định không khớp với loại đại biểu' double (const std :: vector < _Ty> & , std :: vector < _Ty> &, void *) '
MyFunction
là một chức năng riêng trong lớp tham khảo MyRefClass
Các lỗi trích dẫn xuất hiện khi tôi cố gắng tạo ra một thể hiện của các đại biểu tin MyDelegate
, tuyên bố trong lớp tham khảo cùng với các mã:
MyDelegate^ del = gcnew MyDelegate(&MyRefClass::MyFunction);
Theo như tôi có thể biết, chữ ký của hàm MyFunctionWrapper
khớp với đại biểu, vì vậy tôi không chắc chắn điều gì gây ra lỗi.
Để hoàn chỉnh, các (tư nhân) chức năng chữ ký là:
double MyFunction(const std::vector<double> &x, std::vector<double> &grad, void *data)
và (tư nhân) tuyên bố đại biểu là:
delegate double MyDelegate(const std::vector<double> &x, std::vector<double> &grad, void *data);
Bạn hoàn toàn đúng - cảm ơn! – Rory