无法让setter工作

 UUUUUUUUUU8 发布于 2023-02-13 13:49

代码:

HEADER

class Parser{

private:
    unsigned int cant_documentos;
    unsigned int cant_terminos;
    std::map dicc_stopwords;
    std::map hash_frecuencias_globales;
    std::map > hash_frecuencias_locales;
    std::map hash_apariciones_unicas;
public:
    Parser();
    ~Parser();


public:
    void setFrecuenciasGlobales(std::map > frecuencias);
};

头顶

.CPP

void Parser::setFrecuenciasGlobales(map > frecuencias){
hash_frecuencias_globales = frecuencias;
cant_terminos = frecuencias.size();
}

CPP结束

编译器输出:

parser/parser.cpp:102:30: error: no match for ‘operator=’ in ‘((Parser*)this)->Parser::hash_frecuencias_globales = frecuencias’
parser/parser.cpp:102:30: note: candidate is:
/usr/include/c++/4.6/bits/stl_map.h:253:7: note: std::map<_Key, _Tp, _Compare, _Alloc>& std::map<_Key, _Tp, _Compare, _Alloc>::operator=(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = std::basic_string, _Tp = unsigned int, _Compare = std::less >, _Alloc = std::allocator, unsigned int> >, std::map<_Key, _Tp, _Compare, _Alloc> = std::map, unsigned int>]
/usr/include/c++/4.6/bits/stl_map.h:253:7: note:   no known conversion for argument 1 from ‘std::map, std::map, unsigned int> >’ to ‘const std::map, unsigned int>&’

问题出在哪儿?

1 个回答
  • hash_frecuencias_globales是一个std::map<std::string,unsigned int>,你试图给std::map<std::string,std::map<std::string,unsigned int> >它分配一个:

    void Parser::setFrecuenciasGlobales(map<string,map<string,unsigned int> > frecuencias){
      hash_frecuencias_globales = frecuencias; // oops!
    

    至于frequencias通过价值传递,这只有在你离开它或打电话时才有意义std::map::swap.对于简单的赋值,最好通过const引用传递并避免不必要的副本.

    2023-02-13 13:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有