我只是创建一个包含 _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;
...
那么我的构造函数出了什么问题??
为什么在类构造函数中做同样的事情却行不通?
最佳答案
在使用COM对象之前,必须先调用CoInitialize(NULL)初始化COM环境,最后再调用CoUninitialize()释放COM。
在您给出的示例中,主函数调用了这两个函数。
关于c++ - ADO 记录集对象 : strange invalid pointer error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789941/