c++ - ADO 记录集对象 : strange invalid pointer error

标签 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;
...

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

为什么在类构造函数中做同样的事情却行不通?

最佳答案

在使用COM对象之前,必须先调用CoInitialize(NULL)初始化COM环境,最后再调用CoUninitialize()释放COM。

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

关于c++ - ADO 记录集对象 : strange invalid pointer error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789941/

相关文章:

java - FileNotFoundException 中定义的私有(private)构造函数?

mysql - 带参数和通配符的 SQL

xml - 使用 ado 对象使用 'save' 方法更改 xml 导出字段的精度

c++ - glog 库(谷歌日志)在堆栈跟踪中打印出 `(unknown)`?

c++ - 在 std::cout 中递增变量时指针不显示更新值

C++ 使用 vector 从文本文件中读取和写入数字

c++ - 编译和工作的错误静态常量初始化

javascript - 如何在 Javascript 中覆盖基类构造函数

java - 哪个先跑?实例变量或 super 构造函数的默认值?

ms-access - ADO 数据类型的限制是什么?