Через несколько дней я получаю сообщение с предупреждением при отладке. Я не могу найти, откуда это. Я уже гуглил и нашел такие вещи, потому что у меня есть статическая переменная. Но снятие этого ничего не меняет.
Это метод main
:
int main(int argc, char* argv[]) {
if (argc != 2) {
cout << "ERROR: Wrong amount of arguments!...\n"
<< endl;
cout << "\n" << "Programm closed...\n\n" << endl;
cin.ignore();
exit(1);
return 0;
}
cout << "argv[1] " << argv[1] << endl;
GenericCommandConverter a(argv[1]);
a.getCommandsFromCSV();
cout << "\n" << "Programm finished...\n\n" << endl;
return 0;
}
Код, где это происходит в первый раз:
void GenericCommandConverter::getATCommandsFromCSV() {
cout << "+++++++++++getCommandsFromCSV) started++++++++++++++" << endl;
string filename_csv = "test.csv";
string commands = "";
int pos_start = 0;
int pos_end = 0;
int substrLength = 0;
int separator_count = 0;
char c;
vector<string> lines;
vector<string> commandList;
vector<unsigned int> parameterPositionList;
vector<vector<string> > linesSeparated;
vector<vector<string> > part1_input;
vector<vector<string> > part2_output;
vector<map<vector<string> , vector<string> > > listedParameterMap;
ifstream csvFile;
csvFile.open(filename_csv.c_str(), ios_base::in);
cout << "i'm starting getCommandsFromCSV()...\n" << endl;
/**
* STEP 1
* Putting input text file into a string
*/
if (csvFile.is_open()) {
while (!csvFile.eof()) { // <------- warning occurs here!
csvFile.get(c);
commands += c;
}
...
}
Внимание:
[New Thread 2000.0x11bc]
warning: can't find linker symbol for virtual table for
`std::less<std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > >' value
Кто-нибудь знает, почему это происходит? Он идет с каждой строкой, пока не начнется. Он настолько заполняет консоль, что отладка невозможна.
Другая, может быть важная информация о автономном режиме, эта ошибка не отображается.
Я бы очень признателен за помощь!
РЕДАКТИРОВАТЬ: заголовочный файл
#ifndef CommandConverter_H_
#define CommandConverter_H_
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <iosfwd>
#include <map>
#include <vector>
#include <cstdio>
using namespace std;
class CommandConverter {
public:
CommandConverter(char* file);
virtual ~CommandConverter();
void printConvertedTraceByPage(vector<string> lines);
map<string, vector<map<vector<string> , vector<string> > > > csvMap;
static const int MAX_SIZE = 5;
void getATCommandsFromCSV();
string readTxtFile();
vector<string> splitIntoLines(const char* trace);
vector<string> convert(vector<string> fileInLines);
bool commandAvailable(const char* l, int pos, const char* s);
void error(const char* p, const char* p2);
void printCSV();
// opened in constructor; closed in destructor
ifstream myfile;
string filename;
string trace_raw;
};
#endif /* CommandConverter_H_ */