Некоторая часть моего кода приведена ниже. Здесь m_out определяется как: static_cast<std::vector<std::vector<std::string> >* m_out;
Как преобразовать void * в std :: vector <std :: vector <std::string>> *?
Проблема в данной строке m_out->push_back(row);
. Я получаю «Ошибка сегментации (core dumped)», и когда я отлаживаю, я обнаружил причину в данной строке выше. Я предполагаю, что это связано с тем, что для m_out не выделяется память. Если да, то как я могу выделить память для данного двумерного вектора?
int some_space::database::callback(void* data, int argc, char** argv, char** col_name)
{
if(m_out != 0) {
m_out->clear();
}
m_out = static_cast<std::vector<std::vector<std::string> >*>(data);
std::vector<std::string> row;
for(int i = 0; i < argc; ++i){
row.push_back(argv[i] ? argv[i] : "(NULL)");
}
m_out->push_back(row);
return 0;
}
Спасибо всем. Я решил свою проблему. Я изменил код следующим образом. Теперь m_out является переменной, а не указателем static_cast<std::vector<std::vector<std::string> > m_out;
.
int some_space::database::callback(void* data, int argc, char** argv, char** col_name)
{
if(m_out.size() != 0) {
m_out.clear();
}
for(int i = 0; i < 6; i++) {
m_out.push_back(std::vector<std::string>());
}
for(int i = 0; i < argc; ++i) {
m_out[i].push_back(std::string((char *)argv[i] ? argv[i] : "(NULL)"));
}
return 0;
}
И это работает отлично :)
Вы не скажете, какую ошибку вы получите ... – sth
Что такое 'm_out'? Где ваш минимальный тест? –
Я получаю «segmentation fault» на линии: m_out-> push_back (строка); –