我想通过线程调用将一个类对象传递给其他类的方法,我试过但得到了错误,任何人都可以帮助我解决这个问题。请。
struct sample{
int status;
std::vector <std::string> a_row;
size_t column_count;
std::vector <std::string> column;
};
class sess {
public:
int a;
sess(int);
sess();
};
class Gen {
private:
static Gen* gen_obj;
public:
static bool Gen_InstanceFlag;
static Gen* GetInstance();
sample addition(sess);
};
/* 头文件结束 */
/* cpp 文件的开头 */
include"Class_thread_mixing.h"
bool Gen::Gen_InstanceFlag=false;
Gen* Gen::GetInstance(){
if(!Gen::Gen_InstanceFlag){
Gen::gen_obj = new Gen();
Gen::Gen_InstanceFlag= true;
return gen_obj;
}
else {
return gen_obj;
}
}
sample addition(sess ses_obj){
sample sam;
sam.a_row.push_back("success");
sam.column.push_back("result");
sam.column_count=1;
sam.status=ses_obj.a;
return sam;
}
int main(int argc, char* argv[])
{
HANDLE myhandleA;
Gen* gen=Gen::GetInstance();
sess ses_obj(10);
myhandleA=(HANDLE)_beginthreadex(0, 0, gen->addition(ses_obj),(void*)0, 0, 0);
WaitForSingleObject(myhandleA, INFINITE);
CloseHandle(myhandleA);
getchar();
return 0;
}
这是我的代码,我收到类似“错误 C2665:'_beginthreadex':2 个重载都不能转换所有参数类型”的错误
谁能建议我谁可以将 sess 的对象传递给线程调用中的函数,以及如何从线程中获取结果。
谢谢你的回答。。
有任何选项可以让我直接在线程中调用函数而无需调用独立的线程函数,就像我在代码中提到的 [(HANDLE)_beginthreadex(0, 0, gen->addition(ses_obj),(void*) 0, 0, 0)]
我需要在线程中调用添加方法,任何人都可以帮助我解决这个问题。