【发布时间】:2013-10-09 11:57:13
【问题描述】:
我想通过线程调用将一个类对象传递给其他类的方法,我试过但得到错误任何人可以帮助我解决这个问题。
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),(无效*)0, 0, 0)]
我需要在线程中调用添加方法,任何人都可以帮助我。
【问题讨论】:
-
发布有关编译错误的问题时,请在问题中填写完整、完整且未经编辑的错误消息。这将使帮助您变得更加容易。您可能想阅读the Stack Overflow question checklist,它将帮助您写出好问题。
标签: c++ multithreading beginthreadex