Ссылка на переменные вне функции
Я относительно новичок в написании функций на C++, в настоящее время у меня есть функция, которая будет принимать файл и проверять его имя. Если он включает "/ ham/ " в имя файла, мы затем увеличиваем количество слов для hamCount и начинаем бросать слова из этого файла в hamMap. Если имя файла содержит "/spam", то мы делаем то же самое, но для спама. Это все хорошо и хорошо, за исключением того, что когда я пытаюсь сделать звонки на карты, они находятся "вне сферы действия". Вот мой пример кода функции:
void mapAssign(string fileName) { string wordRead = ""; ifstream opFile( fileName ); if( !opFile.is_open() ) { cout << "CANNOT OPEN FILE: " << fileName << endl; } if( fileName.find("/ham/") == true ) { while( getline(opFile, wordRead, ' ') ) { ++ham[wordRead]; ++hamCount; } ++spam[wordRead]; ++spamCount; } } opFile.close(); opFile.clear(); }
А функция main () - это:
int main(int argc, char* argv[] ) { int wordCount; int fileStrCount; set<string> seenWords; map<string, int> ham; map<string, int> spam; int hamCount; int spamCount; if( argc < 2 ) { cout << "ERROR: Must have atleast one filename! \n"; } //The user gives a path to a directory containing "index" //File is used to store filename and fList stores them string files = ""; vector<string> fList; //Storing full path of directory to later add /index string pathToDir = argv[1]; string pathToIndex = pathToDir + "index"; ifstream dirIndex( pathToIndex ); //Push back all filenames within index to fList while( getline( dirIndex, files ) ) { fList.push_back( files ); } //Iterate through filenames and open them for(unsigned x = 0; x < fList.size(); x++) { string goHere = pathToDir + fList[x]; mapAssign(goHere); } } for(auto elem : ham) { cout << elem.first << " " << elem.second << "\n"; } cout << endl << endl << endl; for(auto elem : spam) { cout << elem.first << " " << elem.second << "\n"; } }
Ошибка компиляции заключается в следующем:
betaAssassin.cpp:26:11: ошибка: ‘ham’ не был объявлен в этой области
++ветчина[wordRead];
Что я уже пробовал:
Я понятия не имею, как действовать дальше, я попытался изменить расположение функции, но это не поможет