微信扫一扫 分享朋友圈

已有 128 人浏览分享

开启左侧

错误信息:cannot call member function ‘ ‘ without object 解决方法

[复制链接]
128 0
一、源码展示
std::vectorstd::string split()函数报错:cannot call member function ’ ’ without object,如果直接引用没有对象,因为这里面的其他函数都是static,是写在头文件中的,没有实际的object,所以必须也要定义成static。
正是因为都放在头文件中实现,所以要定义成static。
  static std::string extract(std::string &values, int index, char delim) {
    if (values.length() == 0) return std::string("");

    std::vector<std::string> x = split(values, delim);

    if (index > x.size()) {
      throw "Error:Out-of-range index";
    }
    return x.at(index);
  }

  static void _split(const std::string &s, char delim,
                     std::vector<std::string> &elems) {
    std::stringstream ss(s);
    std::string item;

    while (std::getline(ss, item, delim)) {
      elems.push_back(item);
    }
  }

  std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    _split(s, delim, elems);
    return elems;
  }

提示:这里对文章进行总结:
如果是在头文件中实现的函数需要定义成static,因为没有实际对象,所以作为全局函数使用,如果少加static,就会出现报错cannot call member function ’ ’ without object ,相应处理为+static或者定义一个对象如果是在源文件中。


免责声明:
1,海欣资源网所发布的资源由网友上传和分享,不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
2,海欣资源网的资源来源于网友分享,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3,海欣资源网所发布的资源由网友上传和分享,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
4,如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉,联系方式邮箱 haixinst@qq.com
海欣资源-企业信息化分享平台。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

48

主题
热度排行
回复排行
最新贴子

Archiver|手机版|小黑屋|海欣资源 ( 湘ICP备2021008090号-1 )|网站地图

GMT+8, 2022-9-25 15:55 , Gzip On, MemCache On.

免责声明:本站所发布的资源和文章均来自网络,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉。