Есть несколько вопросов с той же ошибкой, но никто не подходит к моему делу.
У меня есть два класса: загрузчик и процессор. Загрузчик загружает вектор строки. Процессор вызывает в конструкторе метод 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.
Задача ещё не решена.
Других решений пока нет …