using namespace std;
class Puzzle
{
public:
void SetTable() //Is there a better way to do this? (2d array)
{
const int four = 4;
char Table[four][four]=
{
{'f', 'k', 's','a'},
{'l', 'u', 'o','w'},
{'y', 'o', 'n', 'a'},
{'x', 't', 'o', 'y'}
};
}
void OutputTable()
{
int n=0;
while (n < 4)
{
for (int x = 0; x < 4; x++)
{
cout << Table[x][n] << " "; //error here
}
cout << endl;
cout << endl;
n++;
}
}
};
int main()
{
Puzzle connect;
connect.SetTable();
connect.OutputTable();
return 0;
}
有没有更好的方法在类Puzzle中设置2d数组? 如何在void OutputTable中访问void SetTable? 所有变量都必须在Puzzle类中。 提前谢谢!
答案 0 :(得分:1)
我会建议你练习更多,因为你在问题中显示的是错误的,并且有很多方法可以实现它,这是错误的方式,因为你所说的2D数组无法从其他任何地方访问,像hidden这样的函数并没有设置2D数组的内容只是声明函数内部只有一个2D数组。
为了帮助您开始,请执行以下操作:
#include <iostream>
using namespace std;
class Puzzle
{
public:
char Table[4][4] =
{
{'f', 'k', 's','a'},
{'l', 'u', 'o','w'},
{'y', 'o', 'n', 'a'},
{'x', 't', 'o', 'y'}
};
// This function will be more useful if the `Table` is not public
void SetTable(int row, int col, char value)
{
Table[row][col] = value;
}
void OutputTable()
{
int n=0;
while (n < 4)
{
for (int x = 0; x < 4; x++)
{
cout << Table[x][n] << " "; //error here
}
cout << endl;
cout << endl;
n++;
}
}
};
int main()
{
Puzzle connect;
connect.SetTable(2, 3, 'A');
connect.OutputTable();
return 0;
}
答案 1 :(得分:0)
使用std::array
作为类成员变量来实现。
您的代码应如下所示:
using namespace std;
class Puzzle
{
constexpr int four = 4;
std::array<std::array<char>,four>four> Table;
public:
Puzzle() : Table {
{'f', 'k', 's','a'},
{'l', 'u', 'o','w'},
{'y', 'o', 'n', 'a'},
{'x', 't', 'o', 'y'}
} {}
}
// void SetTable() omit that completely
void OutputTable()
{
for(const auto& row : Table) {
for(const auto& col : row) {
{
cout << col << " ";
}
cout << endl;
}
}
};
int main()
{
Puzzle connect;
connect.OutputTable();
return 0;
}