我正在为战舰游戏创建一个10x10网格。我正在使用2D数组的矢量模板,并且在初始化时遇到了麻烦。当我初始化2D矢量时,我试图将10x10矢量的每个空间设置为' '
,但出于某种原因,我将每个坐标初始化为10个空格而不是1个空格。2D矢量初始化:初始化设置怪异长度
board.hpp
#ifndef BOARD_HPP
#define BOARD_HPP
#include "ship.hpp"
#include <vector>
class Board
{
private:
std::vector<std::vector<char> > coordinate;
Ship carrier;
Ship battleship;
Ship floater;
Ship submarine;
Ship destroyer;
public:
Board();
char *coord(int row, int column);
};
#endif // BOARD_HPP
board.cpp
#include "board.hpp"
Board::Board() : coordinate(std::vector<std::vector<char> >(10, std::vector<char>(10, ' '))), carrier('C',5), battleship('B',4), floater('F',3), submarine('S',3), destroyer('D',2)
{
//Constructor
}
char *Board::coord(int row, int column)
{
return &coordinate[row][column];
}
这里是游戏文件板送入:
game.hpp
#ifndef GAME_HPP
#define GAME_HPP
#include "board.hpp"
class Game
{
private:
Board *playerBoard;
Board *compBoard;
Board *compBoardHidden;
public:
Game(Board *player_board, Board *comp_board, Board *comp_board_hidden);
void display();
};
#endif // GAME_HPP
game.cpp
#include "game.hpp"
#include <iostream>
Game::Game(Board *player_board, Board *comp_board, Board *comp_board_hidden) : playerBoard(player_board), compBoard(comp_board), compBoardHidden(comp_board_hidden)
{
//Constructor
}
void Game::display()
{
std::cout << " | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|" <<std::endl;
for (int i = 0; i < 10; i++)
{
std::cout << " ---+---+---+---+---+---+---+---+---+---+---+ ---+---+---+---+---+---+---+---+---+---+---+\n " << char(65+i) << " | " << playerBoard->coord(i,0) << " | " << playerBoard->coord(i,1) << " | " << playerBoard->coord(i,2) << " | " << playerBoard->coord(i,3) << " | " << playerBoard->coord(i,4) << " | " << playerBoard->coord(i,5) << " | " << playerBoard->coord(i,6) << " | " << playerBoard->coord(i,7) << " | " << playerBoard->coord(i,8) << " | " << playerBoard->coord(i,9) << " | " << char(65+i) << " | " << compBoard->coord(i,0) << " | " << compBoard->coord(i,1) << " | " << compBoard->coord(i,2) << " | " << compBoard->coord(i,3) << " | " << compBoard->coord(i,4) << " | " << compBoard->coord(i,5) << " | " << compBoard->coord(i,6) << " | " << compBoard->coord(i,7) << " | " << compBoard->coord(i,8) << " | " << compBoard->coord(i,9) << " |" << std::endl;
}
}
您正在使用''''来初始化矢量,并且您在想为什么它会填充空格?我是否正确理解你的问题? – Rakete1111
好吧,我试图初始化向量每个坐标有一个空间。但是,当我引用坐标[0] [0]等矢量中的坐标时,它不仅包含一个字符“',而是包含10个”字符 – ChillyPenguin672
Oooh。那么,我[无法重现](http://coliru.stacked-crooked.com/a/ed46ead6639d5c88)。请创建一个[mcve]。 – Rakete1111