我需要在两个函数(主函数和线程函数)中发送一个类的对象实例
程序是这样的
Class ABC
{
}obj(32);
void F1()
{
obj.test;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
obj.test1;
_beginthread(F1,0,(void*)number);
}
在上面的示例中,我创建了类ABC并将其对象声明为obj(32)。我在Main函数中调用此对象。在Main函数中,使用thread调用函数'F1',在函数'F1'中调用相同的对象'obj'。
当如上所示创建ABC类的对象时,代码运行良好。我的问题是从文件中读取对象('32')中传递的值。
如果我在Main函数和函数'F1'中单独读取文件并创建对象,则不执行函数'F1'。
如何为Main函数和函数'F1'创建相同的对象实例,并在从文件中取出的对象中传递值。
用于从文件中读取的代码是
FILE *fileread;
int character;
fileread=fopen("C:/file.txt", "r");
if (fileread==NULL)
{
return 1; // exit with failure
}
int n,number;
while((fscanf(fileread, "%d",&n))==1)
{
number=n;
}
fclose(fileread);
现在,创建的对象应该像obj(number)
同一个ABC obj(number)
实例将在主函数和函数'F1'中定义。
//////////////////更新了一个/////////////////////////// ///////////////////
我的班级是这样的
Class ABC
{
public:
DWORD *IdG;
ABC(int number)
{
IdG = new DWORD[number];
}
}
然后我定义了typedef,这样我就可以在beginthread中发送两个参数
typedef struct ST{
int num;
CMinimalServer* srv1;
}thestruct;
我的功能是这样的
void F1(thestruct* st)
主要功能是
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
thestruct st;
st.num =32;
st.srv1; // problem is here how to specify class constructor as srv1(32).
//beginthread part is modified as below
_beginthread((void(*)(void*))ModbusReadWrite,0,(void*)&st);
我需要将类对象创建为ABC srv1(32)
答案 0 :(得分:0)
您可以为结构定义构造函数:
typedef struct ST {
int num;
CMinimalServer* srv1;
explicit ST(int num);
} thestruct;
ST::ST(int _num) : num(_num), srv1(new ABC(_num))
{
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
thestruct st(32);
// here:
// st.num == 32
// st.srv1 points to ABC(32)