2014-07-16 54 views
0

我只是創建持有_RecordsetPtr作爲成員的類.. 這是我到目前爲止有:ADO對象_Recordset:怪無效指針錯誤

class MyClass { 
public: 
    MyClass(); 
private: 
    _RecordsetPtr m_RecPtr; 
} 

MyClass::MyClass() { 
    m_RecPtr = NULL; 
    m_RecPtr.CreateInstance(__uuidof(Recordset)); 
    m_RecPtr->CursorType = adOpenStatic;     // ERROR! 
    m_RecPtr->CursorLocation = adUseClient;   
    m_RecPtr->Sort = ""; 
} 



int main() { 
    MyClass c;    //ERROR! 
} 

的主要方法時發生錯誤其中MyClass的默認構造函數被調用..

我只是實例化對象m_RecPtr ,,但是當我嘗試設置其光標位置,

這奇怪給了我一個「無效指針」錯誤...

我已經看了ADO文檔(Link!!),它好像我正確實例化對象_RecordsetPtr ...

這是它是如何聯繫我的文檔中進行(這正是同我在做什麼!!):

_RecordsetPtr pRstAuthors = NULL; 
pRstAuthors.CreateInstance(__uuidof(Recordset)) 
pRstAuthors->CursorType = adOpenStatic; 
pRstAuthors->CursorLocation = adUseClient; 
... 

那麼我的構造函數有什麼問題?

爲什麼在類構造函數中做同樣的事情不起作用?

回答

1

在使用COM對象之前,您必須調用CoInitialize(NULL)來初始化COM環境,同樣,您應該調用CoUninitialize()以最終釋放COM。

在您給出的例子中,主函數調用了這兩個函數。