<分区>
Possible Duplicate:
Calling virtual function of derived class from base class constructor?
我有以下文件(请原谅打字错误,我根据内存快速重写了代码)
BaseReader(){
openFile();
}
void BaseReader::openFile(){
//logic to open file
}
打开文件在 .h 中被声明为虚拟公共(public)方法(它受到保护,但我在试图找出问题所在时将其切换为公共(public)方法)。 SortReader 定义为:
class SortReader: public BaseReader{
public:
SortReader();
void openFile();
};
使用以下代码:
SortReader::SortReader(): BaseReader(){}
SortReader::openFile(){
sortFile();
BaseReader::openFile();
}
当我尝试构建 SortReader 对象时,永远不会调用 sortFile 方法。我可以在调试器中遍历它并观察 SortReader 调用 BaseReader 构造函数 BaseReader 构造函数调用 openFile,后者调用 openFile 的 BaseReader 版本。我希望它调用 SortReader 对打开文件的实现。我需要做什么才能做到这一点?