c++ - 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();
}
}
解决方案
createLibraries 不能定义为静态的。
推荐阅读
- ios - 基于 Xcode 版本 12.5.1 构建的 Fluuter App 在 iOS 14.7 上崩溃
- facebook - 在 ADMOB 和 Facebook 竞价集成中出现错误得到“广告源没有填充”
- php - 上传 laravel 8 项目后的 HTTP ERROR 500
- r - R,XPath,文本抓取:获取节点内的文本,同时过滤其后代之一的属性值
- docker - Jupyterhub SwarmSpawner 选择工作节点
- php - 我可以在现有 PHP 应用程序中实施 Azure AD 身份验证吗
- python - (Selemium/python)selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互
- node.js - 连接到Node js时Redis连接错误
- c - 从用户获取字符串作为输入
- python - 创建具有相同程序但结果不同的多个文件