访问类中 threadproc 中的成员函数
Accessing member functions in threadproc within a class
>我在使用 mfc 函数时遇到了一个难题
AfxBeginThread(AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
显然,AFX_THREADPROC类型是一个参考。这就是奏效的方法。所以在一个类(构造函数)中,我调用这个函数来启动一个线程使用线程路由调用它 MyThreadProc() 引用如下。
pfnThreadProc = &MyThreadProc;
我从另一个程序复制了这种用法,MyThreadProc() 定义了它在类外(称之为USBCom)。这工作正常。线程得到了开始。我调试它完成就好了。伟大。然后我意识到此线程例程必须调用其他成员函数才能获得它的完成工作线程职责。我试着在里面打电话,就像
.. USBCom:MyMemberFunc() ..
无济于事。所以后来我把这个MyThreadProc()移到了我的类中。USBCom。编译我不能使用AfxBeginThread()的这个实例化。
我想&MyThreadProc()是问题所在(它所指向的)。可能是一些关于不允许成员函数地址的标准被传来传去——那整个封装的唐。
那么我该如何解决这种困境。我可以在类中启动线程的位置线程进程在类之外但有权访问或查看到启动它的类中的成员函数。
作为一些背景,此线程的目的是读取状态我正在使用的 USB 端口以及通过 USB 2.0 发送给我的数据。我有绩效里程碑要达到,所以我希望这是精益的。我该怎么做做吧??
疯狗
ps:我正在与 FDDi FT240XS USB FIFO 通信。
混淆源于使用"&"作为"地址"与"引用"之间的差异
在C++中,指针变量和引用变量有什么区别?
博士:
int foo;
int *pointer = &foo;
int &reference = foo;
我希望这有帮助
我认为找到了答案,并不是说你的答案不会那么好用。它更糟糕的是,我遇到了必须解决的许可问题也。现在就这样做了。
无论如何,我的回答是我必须公开这些方法。我读过一个指向已将此类实例化为 的对象的指针
UINT MyThreadProc(LPVOID param)
{
MyClass *pMyHndl = (MyClass*)param;
pMyHndl->myPublicFunct();
}
其中 myPublicFunct() 是类 MyClass() 的成员函数。
想了想,我多傻啊。
感谢您的所有帮助。
疯狗
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 将公共但非静态的成员函数与ALGLIB集成
- 使用指向成员的指针将成员函数作为参数传递
- 将重载的成员函数传递给函数模板
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- 如何在C++中使用非静态成员函数作为回调函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 关联容器的下界复杂性:成员函数与非成员函数
- 在 C++ 中用派生类型重写成员函数
- 链表的泛型函数remove()与成员函数remove)
- 如何将lambda作为模板类的成员函数参数
- constexpr构造函数需要常量成员函数时出现问题
- 将自由函数绑定为类成员函数
- 区分非成员函数和头文件中的成员函数
- 如何从子成员函数修改父公共成员变量
- 保留对其他类的成员函数的引用
- 在运算符重载定义中使用成员函数(const错误)
- 内联如何影响模块接口中的成员函数
- 将成员函数指针作为参数传递给模板方法