无法访问对象属性
Can't access object attribute
我对对象函数有问题。
我有一个以地图作为属性的对象:
#ifndef PARSER_H
#define PARSER_H
#include <iostream>
#include <fstream>
#include <map>
#include <string>
#include "../stopwords/stopwords.h"
#include "../porter/porter.h"
class Parser{
private:
unsigned int cant_documentos;
unsigned int cant_terminos;
std::map<std::string,short> dicc_stopwords;
std::map<std::string,unsigned int> hash_frecuencias_globales;
std::map<std::string,std::map<std::string,unsigned int> >hash_frecuencias_locales;
std::map<std::string,std::string> hash_apariciones_unicas;
public:
Parser();
public:
void destroy();
public:
void agregar_termino_a_hash(std::string termino,std::string nombre_archivo);
public:
void cargar_terminos(std::string linea,std::string nombre_archivo);
};
#endif //PARSER_H
#include <iostream>
#include <fstream>
#include <map>
#include <stdlib.h>
#include <string>
#include "parser.h"
#include <string.h>
using std::map;
using std::string;
using std::ifstream;
using std::cout;
using std::endl;
using std::ofstream;
void Parser::agregar_termino_a_hash(string termino,string nombre_archivo){
unsigned int size = termino.size();
if(dicc_stopwords[termino] == 1) return; //No entra porque es un stopword
unsigned int ultimo_char = stem((char*)termino.c_str(),0,size-1);
termino = termino.substr(0,ultimo_char+1);
if(!((*hash_frecuencias_locales)[termino])){
hash_frecuencias_locales[termino] = 1;
if(hash_frecuencias_globales[termino]){
(*hash_apariciones_unicas).erase(termino);
hash_frecuencias_globales[termino]++;
}
else{
cant_terminos++;
hash_frecuencias_globales[termino] = 1;
(*hash_apariciones_unicas)[termino] = nombre_archivo;
}
}else
hash_frecuencias_locales[termino]++;
}
但是我不断收到这样的错误:
没有为后缀"++"声明"运算符++(int("
或类似的东西:
与"操作员"不匹配!
这些行永远不起作用
if(!((*hash_frecuencias_locales)[termino])){
hash_frecuencias_locales[termino] = 1;
有了这个定义:
std::map<std::string,std::map<std::string,unsigned int> >hash_frecuencias_locales;
我的编译器同意我的看法(在您的文件中进行了一些清理后...
$ g++ test_map_pb.cpp
test_map_pb.cpp: In member function ‘void Parser::agregar_termino_a_hash(std::string, std::string)’:
test_map_pb.cpp:63:64: erreur: ‘stem’ was not declared in this scope
unsigned int ultimo_char = stem((char*)termino.c_str(),0,size-1);
^
test_map_pb.cpp:68:7: erreur: no match for ‘operator*’ (operand type is ‘std::map<std::basic_string<char>, std::map<std::basic_string<char>, unsigned int> >’)
if(!((*hash_frecuencias_locales)[termino])){
^
test_map_pb.cpp:69:39: erreur: no match for ‘operator=’ (operand types are ‘std::map<std::basic_string<char>, std::map<std::basic_string<char>, unsigned int> >::mapped_type {aka std::map<std::basic_string<char>, unsigned int>}’ and ‘int’)
尝试做一个最小的例子,你会发现你的问题不在你想的地方。
相关文章:
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- C++ 在堆栈中包含多态属性的类对象存储
- 为什么我的 DeviceInformation 对象没有 System.Devices.InterfaceClassGuid 属性?
- 私有对象的互斥体 - 全局与属性
- 如何从传递到对象的对象内部访问对象的类属性?
- 从 lambda 返回的对象将丢失属性值
- 是否可以在C++中移动临时对象的属性?
- 如何通过对象的类属性删除对象,并返回其对象值?
- 类对象属性是否可以调用返回属性应具有的值的方法C++?
- C++对象作为 Objective-C++ 属性
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组
- 对象属性同级访问
- 如何访问 JSCValue 对象的属性
- 从基于属性的列表中返回随机对象
- 迭代 Napi::对象属性(键)在 Node.js C++ N-API 中
- 返回对象会丢失属性
- 根据 C++ 中的属性对对象类进行分区的优化方法
- 基于对象的两个属性的自定义比较器会引发异常
- 创建新对象并立即为其设置属性时出现编译器错误
- 复合属性对象,当所有子对象都更改时,它禁止多个信号发射