我正在处理我的个人项目。 我想知道的是这个
class Tile
{
private:
char mBlockTile[22][24];
我只想通过getter返回那个2D数组,比如
char* GetBlockTile()
{
return mBlockTile;
}
但我完全不知道该怎么做。 我多次修改函数的数据类型并尝试返回2D数组, 但它不起作用。 :( 请尽快帮忙。 谢谢!
答案 0 :(得分:4)
如果可以,您应该使用std::array
:
#include <array>
class Tile {
std::array<std::array<char, 24>, 22> mBlockTile;
auto& GetBlockTile() { // return a reference, you don't want a copy
return mBlockTile;
}
};
如果您无法使用std::array
,旧方法(在c ++ 11和auto
/ decltype
之前)将是:
char (*GetBlockTile())[24] {
return mBlockTile;
}
或参考:
char (&GetBlockTile())[22][24] {
return mBlockTile;
}
// (freaky) const version
const char (&GetBlockTile() const)[22][24] {
return mBlockTile;
}
...此时您可能想要开始使用typedef
:
typedef char tBlockTile[22][24];
tBlockTile mBlockTile;
const tBlockTile& g() const {
return mBlockTile;
}
答案 1 :(得分:2)
丑陋的语法:
class Tile
{
private:
char mBlockTile[22][24];
public:
char (&getBlock()) [22][24] { return mBlockTile; }
};
使用using
class Tile
{
private:
char mBlockTile[22][24];
using blockType = char[22][24];
public:
blockType& getBlock() { return mBlockTile; }
};