c++,CreateThread在类中使用,要如何声明线程函数呢

c++,CreateThread在类中使用,要如何声明线程函数呢
如果不把线程函数声明成成员函数,那线程函数中不能调用类中的私有成员,

但是设为成员函数又该如何声明,如何访问成员呢

1个回答

定义成友元函数(函数定义加friend写在类里面)就可以了。成员函数有this指针参数,所以不能用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
CreateThread线程函数
之前在一篇 基于TCP套接字实现的简单Demo   一文中用到了线程函数CreateThread()函数来 创建新的线程.下面以一个最简单的多线程例子来说明. C-代码如下: 1 //最简单的创建多线程实例 2 #include stdio.h> 3 #include windows.h> 4 5 //子线程函数 6 DWORD WIN
在VB中如何使用CreateThread函数创建线程
最好有源代码,谢谢!!!
CreateThread函数中如何使用security_attriute 参数
CreateThread函数中如何使用security_attriute 参数rn
线程用到的函数:CreateThread()、WaitForSingleObject()
第一个 CreateThread() 函数功能:创建线程 函数原型: HANDLEWINAPICreateThread(   LPSECURITY_ATTRIBUTESlpThreadAttributes,   SIZE_TdwStackSize,   LPTHREAD_START_ROUTINElpStartAddress,   LPVOIDlpPara
如何取得createthread调用的线程函数的返回值??
如何取得createthread调用的线程函数的返回值??
关于线程函数CreateThread中参数的问题
大哥大姐们好~!rn 我在EVC中,想用CreateThread()这个函数创建一个线程。我程序是这样字写的rn hReadThread = CreateThread(0,0,ReadThread,this,0,&m_dwReadThreadID);rn 其中,hReadThread是HANDLE类型.我定义ReadThread这个函数为以下rn DWORD CComTestDlg::ReadThread(LPVOID lparam)rn rn .....rn rn 但是在我编译时,编译器报出了如下错误:rn error C2664:'CreateTgread':cannot convert parameter 3 from 'unsigned long (void *)'to'unsigned long(_cdecl *)(void *)'rn 请问这是什么原因?是因为我的操作系统定制不对,sdk没打对,还是因为什么原因造成的?rn 谢谢,我信誉好,一定给分!
VC++:CreateThread建立新的线程的函数
Thread:线,security:安全,attributes属性,Stack:堆栈,flag:标记 微软在Windows API中提供了建立新的线程的函数CreateThread,它的语法如下:hThread = CreateThread (&security_attributes, dwStackSize, ThreadProc,pParam, dwFlags, &idThr...
createThread 创建线程,第三个参数线程函数在工程里怎么声明。
请教下:rn mfc工程,创建了一个辅助线程,在线程中读取串口,点击“启动”按钮后读取串口数据。rn 在那个启动按钮的处理函数中创建这个辅助线程。rn 代码如下:rn [code=C/C++]rn m_readfilethread = CreateThread(rn (LPSECURITY_ATTRIBUTES)NULL, rn 0, rn (LPTHREAD_START_ROUTINE)GetSerialContent, rn GetSafeHwnd(), rn 0, rn &ol rn );rn ASSERT(m_readfilethread != NULL);rn [/code]rn rnrn 在程序中CUpperendDlg.h 是这样声明的:rn [code=C/C++]rn afx_msg CString WINAPI GetSerialContent(HWND hSendWnd);rn [/code] rnrn 编译后,报下面这样的错误:rn [color=#FF0000]error C2440: 'type cast' : cannot convert from '' to 'unsigned long (__stdcall *)(void *)'rn None of the functions with this name in scope match the target type[/color]
vb中如何声明线程函数??
我想在VB调用API CreateThread 创建一个线程,并将线程函数声明为如下形式:rnPublic Function SetUserQuota(lpParmeter As Any) As Longrn .......rn .......rnEnd FunctionrnrnVB提示编译出错(指向参数的类型 Any),如下:rncompile error:rnexpected:type name rnrn请问该线程函数该如何声明?rnrn
C中函数的声明
函数声明的一点小得
extern “C” 声明的函数,实现的时候如何使用string呢?
extern “C” 声明的函数,实现的时候如何使用string呢?
线程函数如何调用类中函数?
各位大神们,请教我如何才能让线程函数调用类中函数?rnrnUINT ThreadFun(LPVOID pThreadParam)rnrn TRACE("start\n");rn CProgess *pProgDlg = (CProgess *)pThreadParam;rn CProgressCtrl *pProgCtrl=(CProgressCtrl*)pProgDlg->GetDlgItem(IDC_PROGRESS);rnrn pProgCtrl->SetRange(0,CBeamtechDlg::m_CycleCount);rn rn for(int m=0;mSetPos(m);rn Sleep(100);rn rnrn //pObj->WorkCycle();//调用这个函数rnrn return 0;rnrnrnvoid CBeamtechDlg::WorkCycle()rnrnrn
CreateThread函数
线程是进程中的一个实体,是被系统独立调度和分派的基本单位。一个进程可以拥有多个线程,但是一个线程必须有一个进程。线程自己不拥有系统资源,只有运行所必须的一些数据结构,但它可以与同属于一个进程的其它线程共享进程所拥有的全部资源,同一个进程中的多个线程可以并发执行。在C/C++中可以通过CreateThread函数在进程中创建线程,函数的具体格式如下:[cpp] view plain copy HAN...
CreateThread函数的使用
有个问题想请教大家:rn#include rn#include rnrnvoid Hello(int* i)rncout<<"?"<
使用CreateThread函数创建线程
线程是进程中的一个实体,是被系统独立调度和分派的基本单位。一个进程可以拥有多个线程,但是一个线程必须有一个进程。线程自己不拥有系统资源,只有运行所必须的一些数据结构,但它可以与同属于一个进程的其它线程共享进程所拥有的全部资源,同一个进程中的多个线程可以并发执行。 在C/C++中可以通过CreateThread函数在进程中创建线程,函数的具体格式如下: HANDLE CreateThread(
CreateThread创建的线程中不能使用MFC类吗?
我用CreateThread创建了一个线程,在线程的入口函数里,我定义了一个对话框对象,然后再domodal。这样程序运行是出错。
使用CreateThread时,如何向线程函数传递参数?
我的程序如下,希望通过线程函数产生age+25,然后返回Label1中显示,但不管我怎么改变age的值,Label1中总是显示25,是怎么回事?rn另外,因初学线程,对线程中传达各类参数(如int string handle等)不是很明白,请各位高手指点。rnrn1、定义变量:rntypedef struct stuParamrnrnrn char Name[20] ;rn int age;rnrnTstuParam, *LPstuParam;rn int i;rn HANDLE thread1;rnrn2、线程函数:rn DWORD WINAPI threadfun1(LPVOID para)rnrnTstuParam *myPara = (TstuParam *)para;rn i=25;rn i=i+myPara->age;rn return i;rn rnrn3、调用线程rn__fastcall TForm1::TForm1(TComponent* Owner)rn : TForm(Owner)rnrnrnrnTstuParam MyParam;rnString strName = "wangwang";rn memset(MyParam.Name, 0 , 20 );rn memcpy(MyParam.Name,strName.c_str(),strName.Length() );rn MyParam.age=20;rnthread1=CreateThread(0,0,threadfun1,&MyParam,true,&id);rnrnif(!thread1)rn rn ShowMessage("error");rn Application->Terminate();rn rnrn//---------------------------------------------------------------------------rnvoid __fastcall TForm1::Button1Click(TObject *Sender)rnrnResumeThread(thread1);rnrnLabel1->Caption=IntToStr(i);rnrn
dll中隐式声明 类中函数的隐式声明 如何调用类中的函数dll中
我是通过隐式声明调用函数,在.def文件中对函数进行声明。当我在dll中创建类的时候如何完成类中的函数调用?如果通过在.def文件中函数声明怎么作?还是在通过别的方法去做!请大侠们给出详细的解答?
Vb线程类的声明?
Public myThread1 As New cls_Threadrn我在Vb中想声明一个线程对象,用这一句。但是它编译说“用户定义类型未定义”rn应该怎么做?rn我只用了一天,好多不懂,但有个程序,需要用!rn谢谢各位!
如何声明socket函数呢?
怎样知道socket(int af,int type ,int protocal),还有一些网络函数的声明呢,我以前都是在API viewer里找的。
vb.net的类中如何声明api函数
我在一个类中声明了读文件的api函数rnpublic Declare Unicode Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Longrnrn可是具体执行的时候,使用这个函数却异常出错rnrn但是我把这个api函数声明在另一个文件中,是一个module,就可以执行成功rnrn请问这是为什么呢
createthread 建立线程中使用ado的问题
用createthread来建立的线程,里面要用的ado操作。现在有个问题,rn线程函数后面加了stdcall。不加这个没法传进去参数,就是一个连接字符串,加了stdcall的话,在ado操作的时候就报错,rnrn在这一句,adoquery.sql.add('')这里,不知道为什么这个只是加一个sql语句的处理都会出错,去掉stdcall就可以,不会出错,以前都是用类操作线程,现在用createthread就出这个问题了。高手请帮帮忙。
关于线程函数的声明
在声明线程函数时,避免转换的麻烦,我将其声明为static UINT threadproc(LPVOID pParam),由于我将该线程函数作为类的成员函数,那么在该函数中无法使用该类的成员变量,除非将成员变量也声明为静态。请问有没有别的好的办法使得不用声明为静态也可以直接使用成员变量。
类中声明的函数和类的成员函数
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;class A { public: void f(); void f1(); private: int m_nA; };void A::f1() { cout << 1 << endl; }void f() { cout
如何实现在类里面声明,定义线程函数
如题,我现在知道线程函数必须是全局或静态的,那怎么实现类里面定义线程函数,既能是线程函数,有能调用类的成员变量,
CreateThread中的线程函数可以是一个类的函数吗?
在类的内部创建线程,线程函数也是类的一个函数。rn但是编译时却出错。rn如果把线程函数放在类外面,就没事了。rn请高手指教。rn
我要调用一个 EastRiver.dll 里的函数要如何声明呢?
以下是厂家提供的资料rnrn/*设备联接类*/rn// 联接设备rnEASTRIVER_API HANDLE WINAPI ConnectClock(int Port, int BaudRate, char* ClockNo);rn //说明: ClockNo 为两位字符的机器编号rnrn--------------------------------rnrn1. 连接指定设备rnbool ConnectDevice(int port, int baudRate, int iDeviceId);rn port : 1 or 2, COM port numberrn baudRate : 9600, communication baud ratesrn iDeviceId : 0x00 -- 0xFF, or 0 -- 255rn Device ID codern
类内使用CreateThread的问题
我想在类内调用一个函数,该函数单独使用一个线程类处理;但发现无法使用类内的函数,不知道大家都是怎么处理的。本人很想让这个线程和其他函数处理一样,保留类的封装性质,只能访问该对象的数据结构;rnrn另个问题是我使用了一个静态的变量和函数,一个MyThread中创建一个线程处理,处理函数是前面的静态函数rnrn// MyThread.h: interface for the MyThread class.rn//rn//////////////////////////////////////////////////////////////////////rnrn#if !defined(AFX_MYTHREAD_H__F33A4E09_FE1A_4D17_AE1D_C50F38C008F6__INCLUDED_)rn#define AFX_MYTHREAD_H__F33A4E09_FE1A_4D17_AE1D_C50F38C008F6__INCLUDED_rnrn#if _MSC_VER > 1000rn#pragma oncern#endif // _MSC_VER > 1000rnrn#include "Windows.h"rn#includernusing namespace std;rnrnstatic int i;rnrnstatic DWORD WINAPI func(LPVOID mParam)rnrn i=0;rn while(true)rn rn Sleep(1000);rn //cout<
类与函数之设计和声明
如何设计一个高效率的classes呢?考虑下面的问题: (1)对象应该如何产生和销毁? 影响你的constructor,destructor,operator new,operator new[],operator delete,和operator delete[]的设计. (2)对象的初始化和赋值有何不同? 影响你的constructor和assignment的行为. (3)对象by ...
在cpp如何要声明不要预编译呢?
[size=12px]现在自己写的一些扩展类库在使用的时候必须包含stdafx.h或者每次加入都其他工程中的时候,必须设置cpp,不需要预编译。这样太麻烦了,rn我想知道,有没有办法在cpp中打入什么关键字rn可以告诉编译器,我不需要预编译,或者是我的.cpp文件不包含stdafx.h编译器不会报错?rn就好像键入#pragma comment (lib, "XXX.lib")可以告诉编译器我需要XXX.lib [/size]
如何使用CreateThread
如何用CreateThread生成一个线程,当程序执行一段代码时显示一个窗口rn执行完后销毁线程。rn网络老是出错
怎样使用CreateThread函数(WinAPI)
怎样使用CreateThread函数(WinAPI),请举例说明rn
关于开启线程函数createthread和beginthreadex
看windows核心编程说rn[code=HTML]...注意C r e a t e T h r e a d函数是用来创建线程的Wi n d o w s函数。rn不过,如果你正在编写C / C + +代码,决不应该调用C r e a t e T h r e a d。rn相反,应该使用Visual C++运行期库函数_ b e g i n t h r e a d e x。rn如果不使用M i c r o s o f t的Visual C++编译器,你的编译器供应商有它自己的C r e a t e T h r e d替代函数。rn不管这个替代函数是什么,你都必须使用。rn本章后面将要介绍_ b e g i n t h r e a d e x能够做什么,它的重要性何在...[/code]rnrn现在读mysql源码,发现mysql服务就用createthread开了很多线程啊,用vs编译的. 是不是有什么方法安全的使用createthread?rnrn
C中自定义的函数在使用时要在哪声明?
刚看到谭浩强C语言word版中有如下的一个例子:rnint max(int a,int b); /*函数说明*/rnmain() /*主函数*/rnrn int x,y,z; /*变量说明*/rnint max(int a,int b); /*函数说明*/rn printf("input two numbers:\n");rnscanf("%d%d",&x,&y); /*输入x,y值*/rn z=max(x,y); /*调用max函数*/rn printf("maxmum=%d",z); /*输出*/rn rnint max(int a,int b) /*定义max函数*/rnrn if(a>b)return a;else return b; /*把结果返回主调函数*/rn rnrn想请问一下在main函数外有一个max()函数的说明,在main函数内也有一个max()方法的说明,自己定的函数在使用前究竟应在何处进行函数说明?
C#类中类声明的使用问题???
我在类中声明的类,为什么在声明后,无法从类中调用里面的类呢? rn就是声明后没有出现"PC104_base"这个选项rnPC104 pc104=new PC104();rn然后,"pc104._base"不可用,哪位高手回答一下?rnpublic class PC104rn rn public PC104()rn rn //rn // TODO: 在此处添加构造函数逻辑rn //rn rnrn public class PC104_basern rn public PC104_base()rn rn //rn // TODO: 在此处添加构造函数逻辑rn //rn rnrnrnrn rn
【VS线程】CreateThread的简单使用
原型:HANDLE WINAPI CreateThread(    __in_opt  LPSECURITY_ATTRIBUTES lpThreadAttributes,//为新线程指定安全描述     __in      SIZE_T dwStackSize,  //第二个参数是线程堆栈尺寸,一般设为0    __in      LPTHREAD_START_ROUTINE lpStartAdd...
CreateThread线程参数传递问题
//首先声明不想要全局变量去做rnrnfunction myFun(p:pInteger):boolean;stdcall;rnbeginrn form1.Memo1.Lines.Add('ID='+intTostr(p^));//这里的显示结果大部分输出2 ,有时候是一个很大的数,不知道是那里出问题了rnend;rnrnprocedure TForm1.Button1Click(Sender: TObject);rnvarrn TID : DWORD;rn ID : integer;rnbeginrn ID := 2; //想把这个参数传递进去rn CreateThread(nil, 0, @myFun, @ID, 0, TID);rnend;rnrnrn当按几次Button1时,会出现显示结果大部分输出2 ,有时候是一个很大的数,不知道是那里出问题了;难道是我写错了,错了还需要那里修改 ;
如何声明namespace中的类?
代码结构如下rn文件user.h和user.cpp实现了CUser类,该类位于namespace guki中。rn在login.h文件中,有如下代码片段rnCLogin处于全局namespacern#include"user.h"rnusing namespace guki;rnclass CLoginrnrn...rnprivate:rnCUser GetUser();rn;rn由于CUser是返回类型,所以只需要声明CUser就可以了,然后就能把#include"user.h"和using namespace guki;移动到login.cpp中。但试了很多方式都不知道如何声明CUser,请各位朋友帮忙!
对于声明线程函数的问题
由于最近发现一些书中和实际编程有一些疑问.rnDWORD WINAPI StartPCProbe(LPVOID lParam);rnDWORD StartPCProbe(LPVOID lParam);rn这两个调用效果是一样的吗.rn有区别吗.谢谢大家指教rn
我的类在main()函数后定义的话,如何提前声明呢?就象提前声明函数一样?
我的类在main()函数后定义的话,如何提前声明呢?就象提前声明函数一样?rn[code=C/C++]rn#include rnusing namespace std;rnrnint main()rnrn class Student; //这样声明为何报错呢?rn Student s1;rn s1.set();rn s1.out();rn return 0;rnrnrnrnclass Studentrnrnpublic:rn void out()rn rn cout << "num is: " << num << endl;rnrn rn void set()rn rn num=88;rn rnprivate:rn int num;rn;rn[/code]
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表