ADO _Recordset对象:奇怪的无效指针错误

时间:2014-07-16 20:22:12

标签: c++ constructor ado

我只是创建一个将_RecordsetPtr作为成员的类。 这就是我到目前为止所做的:

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的默认构造函数的main方法中发生错误。

我只是实例化m_RecPtr对象,但是当我尝试设置其光标位置时,

奇怪地给了我一个"无效的指针"错误...

我查看了ADO文档(Link!!),似乎我正确地实例化了_RecordsetPtr对象......

这就是我在链接的文档中所做的事情(这与我正在做的事情完全相同!!):

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

那么我的构造函数有什么问题?

为什么在Class构造函数中完成相同的操作不起作用?

1 个答案:

答案 0 :(得分:1)

你必须在使用COM对象之前调用CoInitialize(NULL)来初始化COM环境,同样,你应该调用CoUninitialize()来最后释放COM。

在您给出的示例中,main函数调用这两个函数。