我试图在一个对象上调用一个函数,但是我收到了这个错误。我有两个类:Sudoku类和Puzzle类。 Sudoku类继承了Puzzle类。 Sudoku类有保护变量,一个Puzzle对象的2D数组Puzzle libraryOfPuzzles[4][10];
当我尝试在libraryOfPuzzles[][];
上调用setSolution函数时,它不起作用。但是,当我在函数本身内部创建的Puzzle test[4][10];
上调用它时,它可以工作。为什么是这样?
void Sudoku::createLibraries(string name) {
Puzzle test[4][10]; //added for demonstration purposes
string fileName = "";
int i = 0;
for (int k = 0; k < 40; k++) {
fileName = name + to_string(k) + ".txt";
string aWord;
ifstream fin;
fin.open(fileName);
i = 0;
int value = 0;
while (!fin.eof()) {
fin >> aWord;
int value = stringToInt(aWord);
libraryOfPuzzles[k / 10][k % 10].setSolution(i / 9, i % 9, value); //this line gives error
test[k / 10][k % 10].setSolution(i / 9, i % 9, value); //this line is fine
i++;
}
fin.close();
}
}
答案 0 :(得分:0)
createLibraries不能定义为静态。
答案 1 :(得分:0)
我认为你的问题是你的数组不公开。所以libraryOfPuzzles [] [];无法访问它,但益智测试[4] [10];可以。
希望这会有所帮助。