尝试创建一个类,该类可以更改动态创建的二维字符串数组中特定元素的内容。
我有一个程序,可以动态创建一个二维数组,然后我想创建一个类,把这个数组作为参数,沿着两个整数,它们将是一个特定元素的索引,稍后我会让它交换那个元素的内容,并扫描数组中它想交换的其他元素,现在我甚至在挣扎,让类把那个数组作为参数。我知道我必须通过引用而不是通过值来执行此操作,因为数组将动态创建,但似乎我做错了。
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
class Example {
int x, y;
string** chart;
public:
Example(int i, int j,string **arr);
void print() const { cout << x << y << chart[x][y] << endl; }
};
Example::Example(int i, int j,string **arr) {
x = i;
y = j;
**chart = **arr;
}
int main() {
string chart[7][7]; //to make the experiment simpler I haven't
//made the array dynamically generated yet
//but it will be later
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if (chart[i][j] == "")
chart[i][j].insert(0, 3, ' ');
}
}
chart[6][5] = "EXA";
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
cout << '[' << chart[i][j] << ']';
}
cout << endl;
}
Example Exa1(6, 5, &chart);
Exa1.print();
return 0;
}
1条答案
按热度按时间31moq8wy1#
问题是
&chart
的类型是std::string (*)[7][7]
,它不能隐式转换为string**
,因此构造函数Example::Example(int i, int j,string **)
不能使用。这正是上面提到的错误所指出的:要解决这个问题,请确保
&chart
与构造函数的3参数具有相同的类型。此外,最好使用
std::vector
。Working demo
或者也可以使用
std::array