关于ADO中Recordset类的封装问题 请教大虾,怎么实现这种功能的封装:CMyRecordset rs;rs("FieldName") = 5;int nValue = rs("FieldName");就是让CMyRecordset类具有()=和=()的运算方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也是刚学,重载operator()应该就可以了_variant_t& CMyRecordset::operator()(const char *field){ return Fields->GetItem(field)->Value;} ms定义是:ADO 允许使用 Value 属性设置和返回长二进制的数据所以给的是_variant_t&,而可以直接进行赋值的。 多谢fangxu1999!!我想把_variant_t与int,CString等类型的转封装起来,调用时自动呼叫相应的重载函数,如下,不知怎么做,请给个思路.rs("Field1") = 5; int nValue = rs("Field1"); rs("Field2") = “string”; CString strValue = rs("Field2"); 这样可就烦一点了,大致过程可以如下:class MyRecordset : public Recordset{ struct MyField { Field & field; MyField(Field& f):field(f){} operator int() { return (int)field->Value } int operator=(int nValue) { field->Value = nValue; return nValue; } }*pField;public: MyField& operator()(const char* field) { if(pField!=NULL) { delete pField; } pField = new MyField(Fields->GetItem(field)); return *pField; } MyRecordset():pField(NULL){} ~MyRecordset() { if(pField!=NULL) { delete pField; } }};MyRecordset rs;rs("field") = 123;int value = rs("field");以上通过内部类封装,主要实现了int的处理,其它的类似吧。可能有点语法错误,适当改改。 fangxu1999大佬,非常感谢!!思路不错!我加上_variant_t与其他类型的转换就行了 怎么用C语言新建一个头文件 为什么子线程不执行 请问哪里有vc++类库的说明文档!!!急用!! MyProject.exe 中的 0x787a3fed (mfc90d.dll) 处未处理的异常 ON_WM_MOUSEWHEEL消息怎么不能响应???? 抗议chinaren!!!加入班级要用手机. 请教:怎样利用特定大小的缓冲区播放大型的WAVE格式的声音数据 ◆◆◆ 公司员工聘用协议 ◆◆◆ 请高手帮忙改个程序,给分很高哦! bmp位图在rtf文件中的存储格式和位图本身格式的区别是什么?100分,百万火急! 周末,散分,先来先得 c++入门看什么好
{
return Fields->GetItem(field)->Value;
}
所以给的是_variant_t&,而可以直接进行赋值的。
我想把_variant_t与int,CString等类型的转封装起来,
调用时自动呼叫相应的重载函数,如下,不知怎么做,请给个思路.rs("Field1") = 5;
int nValue = rs("Field1");
rs("Field2") = “string”;
CString strValue = rs("Field2");
{
struct MyField
{
Field & field; MyField(Field& f):field(f){}
operator int()
{
return (int)field->Value
}
int operator=(int nValue)
{
field->Value = nValue;
return nValue;
}
}*pField;public:
MyField& operator()(const char* field)
{
if(pField!=NULL)
{
delete pField;
}
pField = new MyField(Fields->GetItem(field));
return *pField;
}
MyRecordset():pField(NULL){}
~MyRecordset()
{
if(pField!=NULL)
{
delete pField;
}
}
};MyRecordset rs;
rs("field") = 123;
int value = rs("field");以上通过内部类封装,主要实现了int的处理,其它的类似吧。可能有点语法错误,适当改改。
思路不错!我加上_variant_t与其他类型的转换就行了