在我的頭文件我有:C++初始化非指針對象再
class Game
{
private:
string _name;
Level _currentLevel;
public:
Game();
~Game();
void setName();
void run();
};
在我的cpp文件,我有我的運行功能:
void Game::run()
{
bool finished = false;
string input;
while (!finished)
{
// get input
std::cout << "Enter a command: \n";
std::getline(std::cin, input);
if (input == "quit")
{
finished = true;
}
else if (input == "new")
{
Level _currentLevel;
}
else if (input == "print")
{
_currentLevel.printMap();
}
else
{
std::cout << "Unknown command! \n";
}
}
}
構造和水平printmap方法
Level::Level()
{
_width = RandomGenerator::Instance()->getRandom(6, 10);
_height = RandomGenerator::Instance()->getRandom(6, 10);
for (int y = 0; y < _height; y++)
{
for (int x = 0; x < _width; x++)
{
addRoom(x, y);
}
}
}
void Level::printMap()
{
for (int y = 0; y < _height; y++)
{
for (int x = 0; x < _width; x++)
{
if (x != 0)
cout << " - ";
cout << _map[coordinate(x, y)].getSize();
}
cout << "\n";
}
}
但是,當我輸入new時,運行Level _currentLevel; (創建一個新的非指針對象),對象dosnt改變。我可以看到它在運行printmap(它打印一個包含在Level構造函數中創建的30個隨機值的地圖)時不會改變關卡的值。在Level構造函數中調試_height值的變化。我的Game類應該如何更新_currentLevel的值?
我想你在你的問題中換了'cpp'和'header',不是嗎? – martijnn2008
@martijn nope http://www.cplusplus.com/forum/articles/10627/ –
如果你真的有這樣安排你的cpp和頭文件,你誤會了你鏈接的文章。 – Donnie