回 帖 发 新 帖 刷新版面

主题:[讨论]关于多线程的问题

我做一了个多线程的程序,可老是有一个错误,不知道怎么解决,只能是在线请教各位大虾,先谢了.

问题:
建一个新的类,类中有一个方法operate(),方法里创建一个多线程.
这个是一个头文件,如下:
#include"iostream.h"
#include<windows.h>

#define MAX 10000000
int INDEX=0;

    
class BusyTone
{
public:
    int m_out;
public:
    DWORD WINAPI Fun(LPVOID lpParameter)
    {
        while(INDEX++<MAX)
          Beep(0x400,1000);
        return 0;
    }
    void operate()
    {
        HANDLE hThread;
        hThread=CreateThread(NULL,0,Fun,NULL,0,NULL);    
        CloseHandle(hThread);
        cout<<"please input a number(2,3 or 4)"<<endl;
        while(INDEX++<MAX)
        {
          if(cin>>m_out)
            break;
        }
    }
    
};

主函数main():

#include"BusyTone.h"
#include <Windows.h>
#include"iostream.h"

void  main()
{
    BusyTone b;
    b.operate();
}

报的错误如下:

d:\my vc++\originating call control\busytone.h(23) : 
error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'

回复列表 (共4个回复)

沙发

是这样的:一个类的成员函数的调用方式并不是__stdcall。因为当一个类的成员函数在被调用的时候,就比如说你的Fun函数,实际上参数表在最后被编译器添加了一个this指针,也就是说是Fun(LPVOID lpParameter, BusyTone * this),也就是你通不过的原因。解决方法是改成静态函数,就没有这个问题了

板凳

寻找一直寻找机会的人!
一个趋势中的趋势的项目!
一个直销和传销终结者的项目!
一个帮助普通创业者成功的项目!
   我们在互联网上正在拓展一个生意项目,现在正在寻求合作伙伴。我们认为成功的关键是你是什么人?还有你和谁在一起。我们在乎的是--您是否是有激情、有梦想的人。有意者请跟我们联系,我们和您谈谈,给您讲解一些生意概念,或许我们可以合作。一个集即时网游、交友,娱乐游戏,网络品牌代理商城,互联网平台项目招商进行中……详情QQ空间资料 http://user.qzone.qq.com/909065437/infocenter
网商咨询 摩客天宇QQ 909065437 

3 楼

最新互助式项目。C易特元亨QQ919169870

这是一个互助的模式。
不推广人也有钱赚的。分A B两个网。
不推广的人在A网。推广的人 在B网。
B网推广的人帮助A网。
A网赚取6000元出局。
B网就多了。
详情了解加QQ919169870 
  http://blog.sina.com.cn/s/blog_6b19ec920100liv6.html
C易特奖励制度 
http://blog.sina.com.cn/cyite6
C易特更多资料博客

4 楼

北京法蕾雅竹元诚
空白市场 兆亿商机 第一批卖电脑的发了! 第一批卖手机的发了!! 第一批卖保暖内衣的也发了!!! 抢占先机 您将是第一批卖生态家纺竹纤维产品的人!!!! 法蕾雅生态家纺全国招商咨询QQ294355161 科技之光传访法蕾雅http://player.youku.com/player.php/sid/XMTc2MzY4MjQ0/v.swf

http://blog.sina.com.cn/s/blog_6ca0216a0100n7h9.html
法蕾雅竹纤维的神奇六大功效

我来回复

您尚未登录,请登录后再回复。点此登录或注册