我正在为 RS232 端口编写小班课程。它可以同步写入和异步读取。因此,对于异步读取,我正在使用第二个线程,即等待输入数据。收到数据后,我想用输入数据调用用户回调(我作为构造函数参数获得)。它看起来像:
typedef int (*ReceivedCallback)(string data);
class RS232
{
RS232(string portName, ReceivedCallback dataReceived);
~RS232();
private:
ReceivedCallback dataReceivedCallback;
private:
static unsigned ReaderThread(void* data);
public:
SendData(string data);
}
我的问题是:ReaderThread 必须是静态的才能将指向它的指针传递给 _beginthreadex() 函数。在 ReaderThread 我想调用“dataReceivedCallback”,从构造函数中的用户获得。但我不能,因为我不能在静态 ReaderThread 中调用非静态函数。另外,我不能将“dataReceivedCallback”设为静态,因为我的类可能有很多实例(对于 COM1、COM2、COM3),并且每个实例都应该有自己的回调,由用户获取。
我的架构错误在哪里?你将如何实施它?
提前致谢!
PS 使用 Visual Studio 2005。