0

私は三目並べゲームを作成しています。タイルクラスの9つのインスタンスを含むボードクラスがあり、それらを使用して何かを実行します。最初はC配列を使用してこれらのインスタンスを作成しましたがTile board[MAX_TILES]、すべてが正常に機能します。ただし、ベクトルの方が安全なので、代わりにベクトルを使用したいので、ベクトルで同じことを試しましたstd::vector<Tile> board(MAX_TILES);が、代わりに.cppファイルで多数のエラーが発生し、.hファイルで2つのエラーが発生します。

私は大学の教授からCスタイルの配列を使用するように教えられてきたので、まだベクトルに慣れていません。私は何が間違っているのですか?

これが私のBoard.hとエラーです。.cppが必要な場合は以下を提供します。

#ifndef BOARD_H
#define BOARD_H

#include <SFML\Window.hpp>
#include <vector>

#include "tile.h"

#define MAX_TILES 9

enum Position
{
    TOP_LEFT        = 0,
    TOP_MIDDLE      = 1,
    TOP_RIGHT       = 2,
    MIDDLE_LEFT     = 3,
    MIDDLE_MIDDLE   = 4,
    MIDDLE_RIGHT    = 5,
    BOTTOM_LEFT     = 6,
    BOTTOM_MIDDLE   = 7,
    BOTTOM_RIGHT    = 8
};

class Board
{
private:
    std::vector<Tile> board(MAX_TILES);
    //Tile board[MAX_TILES];
    void positionTiles();
public:
    //Constructors
    Board();
    Board( TileState tileState );
    //Methods
    void clearBoard();
    void drawBoard(sf::RenderWindow& window);

};

#endif

エラー1と2は.hからのもので、その他は.cppからのものです。

Error   1   error C2059: syntax error : 'constant'  
Error   2   error C2059: syntax error : 'constant'  
Error   3   error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   4   error C2228: left of '.setTilePosition' must have class/struct/union    
Error   5   error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   6   error C2228: left of '.setTilePosition' must have class/struct/union    
Error   7   error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   8   error C2228: left of '.setTilePosition' must have class/struct/unio
Error   9   error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   10  error C2228: left of '.setTilePosition' must have class/struct/union    
Error   11  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   12  error C2228: left of '.setTilePosition' must have class/struct/union    
Error   13  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   14  error C2228: left of '.setTilePosition' must have class/struct/union    
Error   15  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   16  error C2228: left of '.setTilePosition' must have class/struct/union    
Error   17  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   18  error C2228: left of '.setTilePosition' must have class/struct/union    
Error   19  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   20  error C2228: left of '.setTilePosition' must have class/struct/union    
Error   21  error C3867: 'Board::board': function call missing argument list; use '&Board::board' to create a pointer to member 
Error   22  error C2109: subscript requires array or pointer type   29
Error   23  error C2228: left of '.setTileState' must have class/struct/union   
Error   24  error C3867: 'Board::board': function call missing argument list; use '&Board::board' to create a pointer to member 
Error   25  error C2109: subscript requires array or pointer type   
Error   26  error C2228: left of '.setTileState' must have class/struct/union   
Error   27  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   28  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   29  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)       45
Error   30  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   31  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   32  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   33  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   34  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   35  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   36  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   37  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)       49
Error   38  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   39  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   40  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   41  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   42  error C2228: left of '.getTileSprite' must have class/struct/union  
Error   43  error C2677: binary '[' : no global operator found which takes type 'Position' (or there is no acceptable conversion)   
Error   44  error C2228: left of '.getTileSprite' must have class/struct/union  
4

3 に答える 3

3

C++03ではこれを行うことはできません。

std::vector<Tile> board(MAX_TILES);

これはc-torで使用する必要があります。

Board():board(MAX_TILES)
{
}
于 2012-08-22T03:03:46.713 に答える
1

簡単に見てみると、クラス定義ではなく、Boardのコンストラクターでベクトルを初期化する必要があります。

于 2012-08-22T03:02:59.927 に答える
0

C ++ 03は、初期化リストをサポートしていません。これがC++11の場合は、{}を使用する必要があります。

于 2012-08-22T03:02:23.930 に答える