要是可以的话,为什么在参数类型列表里面没有int.要是不可以的话用什么代替?

解决方案 »

  1.   

    我记得用long 或者 short
    好象没有int的啊,(很久没用了:)
      

  2.   

    wangweixing2000(星)  我的程序总是在那中断是怎么回事?typedef T _PtrClass;
    ~CComPtrBase() throw()
    {
    if (p)
    p->Release();//中断
    }
      

  3.   

    完全可以,最好用long,因为int的长度与开发平台有很大关系!
      

  4.   

    typedef T _PtrClass;
    ~CComPtrBase() throw()
    {
    if (p)
    p->Release();//中断
    }
    有一个可能就是在此之前调用了CoUnitilize()
    这个错误有时候很隐蔽,我曾犯过。
      

  5.   

    typedef T _PtrClass;
    ~CComPtrBase() throw()
    {
    if (p)
    p->Release();//中断
    }
    这个错误有可能是楼主使用智能指针,结果自己调用了Release,但忘记Detach它,所以在智能指针的析构函数中发生上述错误。至于int类型,不管在哪里都是可以使用的(包括在MIDL中),不过正如jinliu()所说,COM规范取缔了int类型,但是由于组件的实现者是程序员,所以还是可以使用int类型。因为在16位编译器上int代表16位数,在32位上代表32位数,而在64位上代表64位数,没有统一的规定(由于Integer这个词的意思导致),所以建议楼主不要使用int类型。
      

  6.   

    谢谢各位的解答.KingSeaMountain() 说的和我的错误很像.不知道怎么改.
    lop5712(LOP) 感谢你对我int的解释
      

  7.   

    STDMETHODIMP CAVLink::setstatuswords(CHAR* m_status, SHORT m_starbit, SHORT m_endbit)
    {

    bool flag=0;
    list<CStatuswords*> ::iterator it;
    for(it=m_statuswords.begin();it!=m_statuswords.end();it++)
    {  
    if((*it)->m_status==m_status)
    {
    flag=1;
    strcpy((*it)->m_status,m_status);
    (*it)->m_startbit=m_starbit;
    (*it)->m_endbit=m_endbit;
    break;
    }

    } CStatuswords* statuswords=new CStatuswords;
    if(flag==0)
    {
    strcpy(statuswords->m_status,m_status);
    statuswords->m_startbit=m_starbit;
    statuswords->m_endbit=m_endbit;
    m_statuswords.insert(m_statuswords.end(),statuswords);// TODO: 在此添加实现代码
    }      
    return S_OK;
    }
    这是接口代码.当我调这个接口的时候就会出现上述的问题.请各位帮我看看.