У меня есть текстовый файл, который имеет поддельный подобный уровень я загрузить его следующим образ:вектор <string> не работает при использовании раздельных классов
void File::LoadLevel()
{
ifstream input_file;
input_file.open("Level_1.txt");
if (input_file.fail())
{
perror("Level_1.txt");
}
while (input_file >> _level)
{
_level_instance.push_back(_level);
}
}
переменных:
string _level;
vector<string> _level_instance;
Я распечатать его например:
for (int i = 0; i < _level_instance.size(); i++)
{
cout << _level_instance[i] << endl;
}
который отлично работает.
однако у меня есть вектор в другом классе, а также и я использовать поглотитель так:
vector<string>GetlevelData(){ return _level_data; }
и изменить LoadLevel() из этого:
_level_instance.push_back(_level);
к этому:
Level Lvl;
Lvl.GetLevelData().pushback(_level);
Я делаю метод в классе «Уровень», который печатает его на экране так же, как раньше компилируется, но ничего не распечатывает?
Кстати в int main()
neccesary методы выполняются который OpenLevel()
из File
класса и Print()
от Level
класса
EDIT:
передавая его & ссылочной Didnt работы здесь являются методы уровня. ч:
void SetLevelData(const std::string &string) {
_level_data.push_back(string);
}
//Getters
vector<string>& GetlevelData(){ return _level_data; }
в file.cpp:
void File::LoadLevel()
{
ifstream input_file;
Level lvl;
input_file.open("Level_1.txt");
if (input_file.fail())
{
perror("Level_1.txt");
}
while (input_file >> _level)
{
lvl.GetlevelData().push_back(_level);
}
}
он не работает это ничего не печатает, хотя я добавил «&» результат такой же, когда я попробовать его с помощью метода «push_back» в Level.h Здесь есть ИНТ основной() только в случае, если:
int main()
{
File f;
Level lvl;
f.LoadLevel();
lvl.PrintLevel();
system("PAUSE");
return 0;
}
И PrintLevel() в Level.cpp:
void Level::PrintLevel()
{
for (int i = 0; i < _level_data.size(); i++)
{
cout << _level_data[i] << endl;
}
}
Вы называете 'f.LoadLevel();' а ' f' ничего не знает о 'lvl', определенном в' main() ', так почему же должно быть что-то внутри' _level_data', находящегося внутри этого 'lvl'? Где находится явно различный экземпляр 'lvl' внутри вашего' File'? –
@ t.niese, потому что я установил значение «_level_data» в OpenLevel() с помощью GetLevelData(). Pushback (_level) – belkipAndroidness
В вашем 'main()' вы показываете здесь 'lvl' - это новый экземпляр' Level' который не используется нигде, поэтому вызов 'lvl.PrintLevel' в основном не будет отображаться, потому что его' _level_data' пуст. –