由于我对 OOP 非常不熟悉,我决定改变它并编写我的第一个“基于类”的项目。我遇到了一个问题,我不知道如何用语言来解释(问题标题是灾难性的,我知道),所以我将粘贴应该使我的问题清晰的代码
void basecheck() {
std::cout << "base check" << std::endl;
}
void derivativecheck() {
std::cout << "derivative check" << std::endl;
}
class mybase {
public:
mybase() {
std::cout << "base constructor" << std::endl;
check = basecheck;
}
void (*check)();
};
class myderivative : public mybase {
public:
myderivative() {
std::cout << "derivative constructor" << std::endl;
check = derivativecheck;
}
};
int main() {
std::list<mybase> mylist;
mylist.push_back(myderivative());
mylist.front().check();
return 0;
}
这符合我的预期(mylist.front().check() 打印出“派生检查”),但如果可能的话,我宁愿避免使用函数指针(它们看起来不是很面向对象)我想学习它而不是使用肮脏的黑客)。但是,我完全不知道如何摆脱它们并保留当前功能,因为:
我不知道还有什么可尝试的,如果您能提供帮助,我将不胜感激。