读书人

语言理解有关问题

发布时间: 2013-02-19 11:11:40 作者: rapoo

语言理解问题


//L1Point.h
class L1Point
{
public:
string TagName;

//.cpp OCCI访问Oracle数据库
ResultSet *rset = stmt->executeQuery ();
while (rset->next ())
{
L1Point p1;
if(!rset->isNull(1))
{

//使用这句进行赋值发生错误
p1.TagName=rset->getString(1);

//使用下面两句进行赋值可以通过,有何不同,为什么
string nm=rset->getString(1);
p1.TagName=nm;

}


错误:
server.exe 中的 0x1048ad7a (msvcp100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xccccccd0 时发生访问冲突 语法?C++?OCCI
[解决办法]
两者语法不一样, 关键看rset->getString(1)返回参数类型和实际的值, 用调试器看一下.
下面是实际调用细节:

//此处调用的是: string::operator=(const unsigned char*) <= 崩溃
p1.TagName=rset->getString(1);

//此处调用的是: string:string(const unsigned char*) <= 不崩溃
string nm=rset->getString(1);

//此处调用的是: string:operator=(const string&)
p1.TagName=nm;

读书人网 >C++

热点推荐