LSP: наследование против состава

Мне нужно уважать LSP, поддерживая несколько типов данных (шаблоны не могут быть использованы), и у меня возникла дилемма между наследованием и составом.
Если я использую наследование, базовый класс не может использоваться сам по себе, он должен быть приведен каждый раз. Это нарушает LSP?

Наследование будет:

enum eDataType{
FLOAT,
INT,
}

class IObject{
eDataType dataType;
...
};
class IntObject : IObject{
int paramA;
int paramB;
...
};
class FloatObject : IObject{
float paramA;
float paramB;
...
};

При использовании композиции это будет выглядеть так:

struct IntObject{
int A;
int B;
}
struct FloatObject{
float A;
float B;
};
class Object{
eDataType dataType;
IntObject* intObject;
FloatObject* floatObject;
Object(eDataType dataType){
if(dataType == FLOAT){ floatObject = new FloatObject();}
...
}
void updateData(Message* incomingMessage){
if(dataType == FLOAT)
...

};

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]