我有一个问题,我以类似的方式一次又一次地遇到。
例如:
我有一个抽象基类,它充当一系列具体类的接口,例如,数据容器。
class DataInterface
{
public:
DataInterface();
~DataInterface();
virtual void FetchData(void) = 0;
virtual void ProcessData(void) = 0;
virtual void ClearData(void) = 0;
}
具体的类看起来像这样:
class BinaryData: public DataInterface
{
public:
BinaryData();
~ BinaryData();
virtual void FetchData(void);
virtual void ProcessData(void);
virtual void ClearData(void);
private:
bool m_boolData;
}
class IntegerData: public DataInterface
{
public:
IntegerData();
~ IntegerData();
virtual void FetchData(void);
virtual void ProcessData(void);
virtual void ClearData(void);
private:
int m_intData;
}
子类实现了它们从 DataInterface 继承的接口。但是他们有不同的属性来保存他们的数据。到目前为止,一切都很好。
我可以像这样使用主函数中的类:
int main()
{
int IntegerData;
bool BoolData;
DataInterface *pData1 = new BinaryData();
DataInterface *pData2 = new IntegerData();
pData1->FetchData();
pData2->FetchData();
pData1->ProcessData();
pData2->ProcessData();
// now I want to get the data of pData1 and pData2, for example to write it into a file, show in visualization, ...
IntegerData = pData2->GetData() ????
BoolData = pData1->GetData() ????
}
现在问题来了:
如何从具体类中获取数据?我只有基类指针,所以我需要在 DataInterface 中定义一个抽象的 getter 方法。但是 getter 方法的签名会因子类而异。例如一次我需要返回一个整数,一次我需要返回一个布尔类型。
请给我一个提示,这个问题让我发疯:/