【发布时间】:2016-12-09 00:22:42
【问题描述】:
我是使用类的新手,在将数组放入类中时遇到了问题。我想为限制为 50 个字符的文本初始化一个 char 数组,然后用函数替换文本。
#ifndef MAP_H
#define MAP_H
#include "Sprite.h"
#include <SFML/Graphics.hpp>
#include <iostream>
class Map : public sprite
{
private:
char mapname[50];
int columnnumber;
int linenumber;
char casestatematricia[];
public:
void setmapname(char newmapname[50]);
void battlespace(int column, int line);
void setcasevalue(int col, int line, char value);
void printcasematricia();
};
#endif
顺便说一句,我可以像这样初始化我的二维数组
char casestatematricia[][];
我想稍后让这个二维数组动态化,我输入一个列号和一个类似的行号
casestatematricia[linenumber][columnnumber]
创建一个战场。
这是 cpp 代码,以便您了解我想要做什么。
#include "Map.h"
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
void Map::setmapname(char newmapname[50])
{
this->mapname = newmapname;
}
void Map::battlespace(int column, int line)
{
}
void Map::setcasevalue(int col, int line, char value)
{
}
void Map::printcasematricia()
{
}
提前谢谢你。
【问题讨论】:
-
看看
std::string替换包含字符串的char数组。另外,请查看std::vector、std::list、std::map、...(即标准容器)而不是使用原始容器。 -
@Garf365 我不使用 char[50] 无缘无故,这个数据必须在以后序列化,所以它必须有一个固定的权重。
-
我也有需要序列化的数据,它们与
std::string无关。因为你有一些设置器,只需在大小上添加条件 -
@PyrrhaDaSmash4Player “固定重量”是什么意思?
std::vectors 数据是连续存储的,也就是说,您可以在需要时随时从其中获取 c 样式的数组。 -
如果您正准备将整个类内容写入文件,就好像它是一个字节数组一样,这通常不是一个好主意。它是极其不可移植的,一旦你尝试使用 rtti、虚函数或任何其他非 POD 的东西,它就会咬你一口。 @Garf365 给你很好的建议;你应该听他的。
标签: c++ arrays class multidimensional-array sfml