我是使用类的新手,在将数组分配到类中时遇到了问题。我想为限制为 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()
{
}
提前致谢。
最佳答案
考虑遵循这方面的常见做法。 大多数(例如数字)库不在类中使用二维数组。 他们使用动态分配的一维数组并重载 () 或 [] 运算符,以类似二维的方式访问正确的元素。 所以在外面你永远无法判断你实际上是在处理连续存储,它看起来像一个二维数组。 通过这种方式,数组更容易调整大小,更有效地存储、转置和 reshape 。
关于C++ 在类中声明数组并在类中声明二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38740893/