私は次のクラス構造を持っています:
class MyBase
{
public:
virtual ExportData exportData() = 0;
virtual bool exportData(QString filepath)
{
ExportData data = exportData();
data.save(filepath);
}
};
class MyClass : public MyBase
{
public:
virtual ExportData exportData(){//some implementation}
};
class MySubClass : public MyClass
{
public:
virtual ExportData exportData(){//some implementation}
};
次に、次のようにデータをエクスポートします。
MySubClass *sub = new MySubClass();
sub->exportData("/home/me/export.xml");
g ++でコンパイルしようとすると、次のエラーが発生します。
error: no matching function for call to ‘MySubClass::exportData(QString)’
note: candidate is: virtual ExportData MySubClass::exportData()
note: candidate expects 0 arguments, 1 provided
間違ったことはわかりませんが、なぜこれが起こっているのですか?