在使用接口时如何防止向下转换?我已经在stackoverflow上读了一些答案,如果你不得不贬低那么你很可能有一个弱的界面.那你们怎么样呢,这是正确的方法?我有一个具体的例子,我想知道如何正确避免向下转发.在我的示例中,我有一个用于传递数据的接口,但具体实现可能包含唯一属性.在类A和BI中,需要向下转换为DataType1或DataType2,因为它们可以返回不同的属性类型.
struct IData
{
virtual ~IData();
};
struct IAction
{
virtual ~IAction();
virtual void setup(IData& data) = 0;
};
class DataType1 : public IData
{
int data1;
public:
DataType1();
int getData1();
};
class DataType2 : public IData
{
std::string data2;
public:
DataType2();
std::string getData2();
};
class A : public IAction
{
public:
A();
void setup(IData& data) override;
}
class B : public IAction
{
public:
B();
void setup(IData& data) override;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |