COM对象作为结构成员不能初始化???
_RecordsetPtr 类型的变量 record可以用
record.CreateInstance(__uuidof(RecordSet));初试化
如果在一个结构里
typedef struct tagRecordSet
{
BOOL m_bInit;
BOOL m_bOpen;
_RecordsetPtr m_Record;
tagRecordSet()
{
m_bInit = FALSE;
m_bOpen = FALSE;
m_Record = NULL;
}
~tagRecordSet()
{
if ( m_bOpen )
m_Record->Close();
if ( m_bInit )
m_Record->Release();
}
}RecordSet, *PRecordSet;
RecordSet recSet;
recSet.m_Record.CreateInstance(__uuidof(RecordSet));编译的时候说
error C2787: 'tagRecordSet' : no GUID has been associated with this object
这时为啥呢,怎么解决呢
如果
_RecordsetPtr &record = m_pRecordset[i].m_Record;
record.CreateInstance(__uuidof(Recordset));
这样是可以编译通过,但运行程序退出的时候出现析构错误
对了com初始化我是用
::CoInitializeEx作的
问题点数:100、回复次数:3Top
1 楼sinall()回复于 2005-06-04 08:58:33 得分 100
应该是:
recSet.m_Record.CreateInstance(__uuidof(Recordset));
看仔细了:
(__uuidof(Recordset)中的是:“Recordset”而不是“RecordSet”
Top
2 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-06-06 08:23:09 得分 0
楼上正解!楼主应该看看recordset中在COM中的定义Top
3 楼dawndu(东南飞)回复于 2005-06-06 23:04:26 得分 0
呵呵,那个是vc编译器用类型库生成的,在tlh中,大小写敏感的Top




