Этот код:
bool contains = std::find(indexes.begin(), indexes.end(), i) != indexes.end();
CardAbility* cardAbility = contains ? new CardAbilityBurn(i) : new CardAbilityEmpty;
дает следующую ошибку:
Несовместимые типы операндов CardAbilityBurn и CardAbilityEmpty
Однако, если я напишу код следующим образом:
if (contains)
{
cardAbility = new CardAbilityBurn(i);
}
else
{
cardAbility = new CardAbilityEmpty;
}
тогда компилятор не возражает. Почему так? Я хочу использовать тернарный условный оператор, потому что это всего лишь одна строка. Что там?
Мне нужно отметить (я думаю, вам может понадобиться эта информация), что CardAbilityEmpty
и CardAbilityBurn
оба выводятся из CardAbility
, поэтому они так говорят братья.
Спасибо