gpt4 book ai didi

c++ - vector 结构

转载 作者:行者123 更新时间:2023-11-28 06:37:50 25 4
gpt4 key购买 nike

我在发送结构函数时遇到了一些问题: errors

这是我的 main.cpp 文件:

#include "stdafx.h"
#include "vehicles.h"
#include <iostream>
#include "tools.h"
#include <time.h>
#include <vector>


using MAP_GRID = vector<vector<string>>;
using namespace std;

void print_terrain(MAP_GRID);
void set_position(MAP_GRID &, int, int, position &, string);
void random_position(MAP_GRID &, int, string);
MAP_GRID create_terrain();

MAP_GRID MAP = create_terrain();

int _tmain(int argc, _TCHAR* argv[])
{
tanks t34(12, 0.5, 21,6);
srand(time(NULL));

set_position(MAP, 5, 5, player,"[x]");
//[...]
}

这是另一个文件,定义了这个函数:

#include "stdafx.h"
#include <iostream>
#include <vector>

#define MIN_SIZE 6
#define MAX_SIZE 15

using std::vector;
using std::string;
using MAP_GRID = vector<vector<string>>;
int global_size;

struct position{
vector<int> x;
vector<int> y;
};

void set_position(MAP_GRID &MAP, int x, int y, position &pos, string object)
{
if (x <= MAP.size() || y <= MAP.size())
if (MAP[x][y] != "[ ]")
std::cout << "\nPosition is occupied" << std::endl;
else
{
MAP[x][y] = object;
pos.x.push_back(x);
pos.y.push_back(y);
}

else
std::cout << "\Choose correct position" << std::endl;
}

这个结构必须保存一些点的坐标(这些点的数量取决于对象)。

最佳答案

这与 vector 毫无关系(正如您发现的那样,如果您在多年苦心调试此问题的过程中构建了一个 minimal testcase)。

在使用它们之前,您必须至少在每个要使用它们的翻译单元中声明标识符。

你还没有这样做,所以 main.cpp 的编译将失败,因为它确实不知道 position 应该是什么。 player 同样是一个完全的谜。

通常我们在“头文件”中定义类型,以便在多个翻译单元中轻松包含这些定义。在这种情况下,您至少可以通过 position 的前向声明来摆脱困境。

关于c++ - vector 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26509915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com