我有一个基类。例如:
class CData{
public:
CData(const std::string &_filename)
{
m_filename = _filename;
// LodaData(); // wrong
}
virtual void LoadData() = 0;
private:
std::string m_filename;
};
而且,一个子类:
class COtherData: public CData{
public:
COtherData(const std::string &_filename): CData(_filename) {}
virtual void LoadData() {
// some code to load data
...
}
};
我想知道如何在子类的基类中执行一些任务。
问题是你从构造函数调用虚函数 - 你应该避免它。相反,您需要向基类添加一个函数来调用您的虚函数,最终调用子类的重写函数。因此,我将通过以下方式更改您的基类:
class CData
{
public:
CData(const std::string &_filename)
: m_filename(_filename)
{}
void performTask()
{
LoadData();
// ... do something else
}
virtual void LoadData() = 0;
private:
std::string m_filename;
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句