ich eine txt-Datei, die ein Schelm artigen Ebene hat ich es wie so laden:Vektor <string> funktioniert nicht, wenn separate Klassen
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);
}
}
Variablen:
string _level;
vector<string> _level_instance;
ich es ausdrucken wie folgt:
for (int i = 0; i < _level_instance.size(); i++)
{
cout << _level_instance[i] << endl;
}
was gut funktioniert.
jedoch habe ich einen Vektor in einer anderen Klasse als auch und ich verwende einen Getter wie folgt aus:
vector<string>GetlevelData(){ return _level_data; }
und ich ändern, um die LoadLevel() von dieser:
_level_instance.push_back(_level);
dazu:
Ich mache eine Methode in 'Level' Klasse, die es auf dem Bildschirm wie vorherausdrucktkompiliert es aber es gibt nichts aus, warum?
Durch die Art und Weise in den int main()
neccesary Methoden ausgeführt werden, die OpenLevel()
von File
Klasse und Print()
von Level
Klasse
EDIT:
es & durch Bezugnahme funktionierte nicht vorbei hier sind beide Verfahren in Stufe. h:
void SetLevelData(const std::string &string) {
_level_data.push_back(string);
}
//Getters
vector<string>& GetlevelData(){ return _level_data; }
in 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);
}
}
es tut es funktionieren druckt nichts, obwohl ich ‚&‘ hinzugefügt das Ergebnis gleich ist, wenn ich es versuchen, mit ‚push_back‘ Methode in Level.h Hier ist int main() für alle Fälle:
int main()
{
File f;
Level lvl;
f.LoadLevel();
lvl.PrintLevel();
system("PAUSE");
return 0;
}
Und PrintLevel() in Level.cpp:
void Level::PrintLevel()
{
for (int i = 0; i < _level_data.size(); i++)
{
cout << _level_data[i] << endl;
}
}
Sie rufen 'f.LoadLevel();' aber die ' f 'weiß nichts über' lvl', das in 'main()' definiert ist, warum sollte also etwas innerhalb der '_level_data' in diesem' lvl' sein? Wo ist die offensichtlich andere Instanz 'lvl' in Ihrer' Datei' definiert? –
@ t.niese, weil ich '_level_data' 's Wert in OpenLevel() gesetzt habe, indem ich GetLevelData() benutzt habe Pushback (_level) – belkipAndroidness
In deiner 'main()' siehst du 'lvl' ist eine neue Instanz von' Level' das wird nirgends verwendet, also ruft 'lvl.PrintLevel' im Hauptfenster nichts auf, weil' _level_data' leer ist. –