Как вы собираетесь предотвращать даункастинг при использовании интерфейсов?Я прочитал некоторые ответы на 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;
}