如何将类成员字符串传递给其他类函数时解决"'std::length_error"?



我有以下类,

#include <iostream>
using namespace std;
class eventHadler
{
  public:
  virtual void online(string& str)
   {
   cout<<" str :"<< str << endl;  // accessing str here in this function caused "std::length_error"
   }
};

和事件生成器类如下:

class my
{
   public:
   eventHadler *ptr; // this is initialized in one member function
   string localStr;
   my()
   {
        localStr.reserve(1);
        ptr = NULL;
    }
   static void myfun(void* pt);
};
    void my::myfun(void* ptMy)
    {
        my *hdl = static_cast < my* >(ptMy);
        hdl->localStr.clear();
        hdl->localStr.append("mtfun called");
        hdl->ptr->online(hdl->localStr);
    }

int main()
{
        eventHadler eventobj;
        my myObj;
        myObj.ptr = &eventobj;
        my::myfun((void*)&myObj);
        return 0;
}

但是对于my::myfun()的调用,将localStr传递给online()函数会导致以下

terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_S_create

我不能重现上面的错误,但它发生在我的开发代码。

解决这个错误的指针。

p。S:我不能改变myfun()原型

您可能尝试创建一个负长度的字符串。

相关内容

  • 没有找到相关文章

最新更新