我只是创建一个将_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构造函数中完成相同的操作不起作用?
答案 0 :(得分:1)
你必须在使用COM对象之前调用CoInitialize(NULL)来初始化COM环境,同样,你应该调用CoUninitialize()来最后释放COM。
在您给出的示例中,main函数调用这两个函数。