строка — C ++ прервана с basic_string :: _ M_Construct, значение NULL недействительно

Есть несколько вопросов с той же ошибкой, но никто не подходит к моему делу.

У меня есть два класса: загрузчик и процессор. Загрузчик загружает вектор строки. Процессор вызывает в конструкторе метод Loader для загрузки, а затем для каждой строки вызывает свой метод processString. Вот код:

class Loader
{
public:
Loader() {}
void loadAllId() { loaded_ids_.push_back("a"); }
vector<string> loaded_ids_;
};

class Processor
{
public:
Processor() {
loader_ = new Loader();
loader_->loadAllId();
vector<string> loaded = loader_->loaded_ids_;

// Here the loaded vector contains the string

for (uint i=0;i<loaded.size();i++)
processString(loaded[i]);
}

void processString(string s) { cout << s << endl; }
private:
Loader* loader_;
};

int main(int argc, char *argv[])
{
Processor* proc = new Processor();
}

Между созданием «загруженного» и цикла for, который вызывает processStrings, вектор содержит правильные строки. Это то, что показывает отладка.

Сбой при первом вызове метода processString. Он даже не запускает первую строку этого метода.

Я пробовал:

  • Использование строки вместо строкового вектора.

  • Вызовите конструктор Loader, loadAllId и processString
    методы снаружи в основной функции, где я создаю Процессор.

  • Используйте непосредственно вектор идентификатора загрузчика, не копируя его
    (Загружен).

Все эти изменения дали мне ту же ошибку при вызове processString.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]