0
我有一些處理數據文件的代碼,當它遇到問題時報告錯誤,但是我在處理如何給我的類一個回調函數時遇到了問題。下面是這類事情的一個簡單的例子,我想實現:如何通過引用爲C++/CLI中的報告回調傳遞函數?
public delegate void Reporter(System::String^ stringToReport);
/// <summary>
/// Simple file handler with callback options on error
/// </summary>
public ref class MyFileHandler
{
private:
Reporter^ m_reporter;
void ReportError(String^ error)
{
if(m_reporter)
{
m_reporter(error);
}
}
public:
MyFileHandler()
{
}
void SetErrorReporter(Reporter^ reporter)
{
m_reporter = reporter;
}
bool FailingOperation()
{
return false;
}
bool GetData()
{
bool succeeded = false;
// Do some operation that fails
succeeded = FailingOperation();
if(succeeded == false)
{
ReportError("Gah, something bad happened!");
}
}
};
public ref class MyFileLoader
{
private:
MyFileHandler m_mfh;
void ErrorHandler(String^ errorMsg)
{
System::Windows::Forms::MessageBox::Show(errorMsg);
}
public:
MyFileLoader()
{
m_mfh.SetErrorReporter(&CallbackFunctionTests::MyFileLoader::ErrorHandler);
}
};
...其中有一個問題:
1>CallbackTest.h(131) : error C3374: can't take address of 'CallbackFunctionTests::MyFileLoader::ErrorHandler' unless creating delegate instance
所以我得到我誤用或印象誤解事物。也許有更好的方法來實現這一目標?
+ 1 /接受:優秀 - 明白了:-) – 2009-07-06 10:54:14