当前位置: 代码迷 >> C++ >> 语言理解有关问题
  详细解决方案

语言理解有关问题

热度:8538   发布时间:2013-02-26 00:00:00.0
语言理解问题

//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;

  相关解决方案