Ошибка C ++ Нестатическая ссылка на член должна относиться к определенному объекту - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь вызвать функцию для объекта, но я получаю эту ошибку.У меня есть два класса: класс судоку и класс головоломки.Класс Sudoku наследует класс Puzzle.Класс Sudoku имеет защищенную переменную, двумерный массив объектов Puzzle Puzzle libraryOfPuzzles[4][10]; Когда я пытаюсь вызвать функцию setSolution для libraryOfPuzzles[][];, она не работает.Однако, когда я вызываю его на 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();
    }
}

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Я думаю, что ваша проблема в том, что ваш массив не является публичным.Итак, libraryOfPuzzles [] [];не могу получить к нему доступ, кроме теста Puzzle [4] [10];может.

Надеется, что это поможет.

0 голосов
/ 20 мая 2018

createLibraries нельзя определить как статические.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...