我如何在向量中访问typedef结构中的可验证内容

时间:2017-04-13 18:36:06

标签: c++ visual-studio-2010 sdl-1.2

如何访问向量内的数据结构内的变量。我正在使用SDL 1.2

我正在创建一个向量列表,其中包含一个名为SDL_Rect

的数据结构

SDL_Rect里面有4个变量,如下所示:

typedef struct{
  Sint16 x, y;
  Uint16 w, h;
} SDL_Rect;

我想打印出" x"变量到命令提示符窗口。我不确定我做错了什么?

vector< vector<SDL_Rect> >  hitBoxArray;

我在向量内部有一个向量,其中包含数据结构。在下面编写我的代码时,我不确定这是否有所作为。

void (randomFunction)
{
    int width = 10; 
    for (int i = 0; i < width; i++) 
    {
        hitBoxArray.push_back(vector<SDL_Rect>()); 

        cout<<hitBoxArray[1].x    <---- this is the bit i cannot get to work
    }
}

如果你想知道为什么我在向量中有一个向量,这是因为这个代码用于创建一个tile map,第一个向量用于行,第二个向量用于列和代码工作良好。它只是当我试图访问导致我问题的数据结构中的各个变量时。

下面是我的工作代码,如果有帮助,还包括注释中的非工作代码。

类中的函数代码:tileDriver.cpp

void tile::readMapFile(string filename)
{
    fstream map;
    map.open(filename);

    if(map.is_open())
    {
        map>>width;
        map>>height;

        cout<<"The width of the tile map is "<<width<<endl;
        cout<<"The height of the tile map is "<<height<<endl<<endl;

        for (int i = 0; i < width; i++) 
        {
            tiles.push_back(vector<int>()); // Add an empty row for tile sprites
            hitBoxArray.push_back(vector<SDL_Rect>()); // Add an empty row for hit boxes  

            //this bit is the code that will not work for me
            cout<<hitBoxArray[1].x;
            //this bit is the code that will not work for me
        }

        for (int j = 0; j < height; j++) 
        {
            for (int i = 0; i < tiles.size(); i++) 
            {
                tiles[i].push_back(i * j); // Add column to all rows for tile 
sprites
                map>>tiles[i][j];           
            }
            for (int i = 0; i < hitBoxArray.size(); i++) 
            {
                hitBoxArray[i].push_back(hitBox); // Add column to all rows for tile hit boxes
            }
        }
    }
    else
    {
        cout<<"unable to load map for tiled textures! did you spell the name correctly?";
    }
}

头文件:tileHeader.h

#include<iostream>
#include<fstream>
#include<vector>
#include "SDL.h"
using namespace std;
class tile
{
protected:
    SDL_Surface*                ground;
    SDL_Surface*                grass;
    SDL_Rect                    groundTile;
    SDL_Rect                    grassTile;
    SDL_Rect                    hitBox;
    SDL_Rect*                   temp;
    vector< vector<SDL_Rect> >  hitBoxArray;
    int                         width;
    int                         height;
    vector< vector<int> >       tiles;

public:
    tile();
    void                        readMapFile(std::string filename);
    void                        printMap();
    void                        show(SDL_Surface* scr);
    void                        show(SDL_Surface* scr, SDL_Rect cam);
    SDL_Rect                    getHitBox();
    vector< vector<SDL_Rect> >  getHitBoxArray();
};

这是我在编译器中出现的错误:

错误1错误C2039:&#39; x&#39; :不是&#39; std :: vector&lt; _Ty&gt;&#39;的成员C:\ Users \ vishal \ Desktop \ game \ game \ tileDriver.cpp 52

我使用visual studio 2010作为我的编译器

任何帮助,煽动或参考教程以帮助我解决我的问题将不胜感激:)

0 个答案:

没有答案