void CCourse::SetTeacher(BSTR pBstr)
{
teacher.bstrVal=pBstr;
}
//teacher是VARIANT,运行到这个函数报访存错误。

解决方案 »

  1.   

    直接用teacher = pBstr;就可以的
    VARIANT会隐式转换的
      

  2.   

    const COleVariant& operator =(
       const LPCTSTR lpszSrc 
    );
    const COleVariant& operator =(
       const CString& strSrc 
    );
    LPCTSTR和CString可以直接转换,BSTR恐怕不行。
      

  3.   

    teacher.vt=VT_BSTR;
    teacher.bstrVal=pBstr;
    还要看传入的pBstr是否有问题。
    MSDN上的例子中:
    CAtlString str("This is a test string!");
    BSTR bstr = str.AllocSysString();
    这个bstr作为参数传递没有问题。
      

  4.   

    又耗费许久时间,发现问题可能不在BSTR。我新建一个类CCourse,类内有public: int week;类的一个函数
    void CCourse::SetWeek()
    {
    week=0;
    }
    这样也会出错
      

  5.   

    建议使用CCOMBSTR, CCOmVariant
      

  6.   


    难道这样调用?没new?
    CCourse* cc;
    cc->SetWeek();