C++ 在类中声明数组并在类中声明二维数组

标签 c++ arrays class multidimensional-array sfml

我是使用类的新手,在将数组分配到类中时遇到了问题。我想为限制为 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/

相关文章:

c - 显示一个数组,用指针排序,然后在 C 中再次显示原始数组

arrays - 矩阵列表到不规则数组

jquery - 在我的代码中使用此 jquery 行转义 id

c++ - FLTK 事件映射/多线程

c++ - 写入和读取记录到.dat 文件 C++

c++ - Erlang - C 和 Erlang

objective-c - static const int 对于数组大小来说不够好?

c# - 'System.Configuration.ConfigurationSettings.AppSettings' 已过时

.net - 在 matlab 中使用 .net 自定义类

c++ - 使用另一个类的变量