C++ cli 如何在C++/CLI
我想传递arg1,但编译器说“错误C2664:'void System::ComponentModel::BackgroundWorker::RunWorkerAsync(System::Object^'):无法将参数1从'ArgumentList'转换为'System::Object^'”C++ cli 如何在C++/CLI,c++-cli,arguments,backgroundworker,C++ Cli,Arguments,Backgroundworker,我想传递arg1,但编译器说“错误C2664:'void System::ComponentModel::BackgroundWorker::RunWorkerAsync(System::Object^'):无法将参数1从'ArgumentList'转换为'System::Object^'” 看起来您需要使用关键字ref System::Void backgroundWorker2_DoWork(System::Object^ sender, System::ComponentModel::D
看起来您需要使用关键字ref
System::Void backgroundWorker2_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) {
//Do stuff with e->Argument
ArgumentList passedarg=(ArgumentList)e->argument; //'type cast' : cannot convert from 'System::Object ^' to 'ArgumentList'
int y=passedarg.x
string text2=passedarg.text1
//...
}
这样,它将正确地从对象类型(所有managd类的基本对象)继承,该对象类型要求使用关键字ref
System::Void backgroundWorker2_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) {
//Do stuff with e->Argument
ArgumentList passedarg=(ArgumentList)e->argument; //'type cast' : cannot convert from 'System::Object ^' to 'ArgumentList'
int y=passedarg.x
string text2=passedarg.text1
//...
}
这样,它将正确地继承对象类型(所有管理类的基础对象),期望
这不是大多数.NET程序员会考虑的“托管结构”。这将是“值结构”或“值类”。但是,在这种情况下,引用类型可能更好。这不是大多数.NET程序员都会考虑的“托管结构”。这将是“值结构”或“值类”。不过,在本例中,引用类型可能更好。这是std::string
?你将跳过一些箍,以便使它与ref struct ArgumentList {
int x;
string text1;
};