首页 > 解决方案 > C ++错误非静态成员引用必须相对于特定对象

问题描述

我试图在一个对象上调用一个函数,但我收到了这个错误。我有两个课:数独课和拼图课。Sudoku 类继承了 Puzzle 类。Sudoku 类具有受保护的变量,即 Puzzle 对象的 2D 数组Puzzle libraryOfPuzzles[4][10];当我尝试在 a 上调​​用 setSolution 函数时libraryOfPuzzles[][];,它不起作用。但是,当我Puzzle test[4][10];在函数本身内部创建的 a 上调​​用它时,它可以工作。为什么是这样?

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();
    }
}

标签: c++static

解决方案


createLibraries 不能定义为静态的。


推荐阅读