Наследование и приведение типов с шаблонами не работают должным образом

В моем поиске для этого я также нашел Font.js , который добавляет объект Font так же, как Image, поэтому можно проверить, когда шрифт действительно готов к использованию. Также работает на установленных / системных шрифтах. Недостатком является IE9 + только из-за необходимости Object.defineProperty (у других браузеров есть), но если вы занимаетесь современной сетью, это кажется еще лучшим вариантом. (Я, к сожалению, должен идти с ответом выше, выше и дальше двигаться дальше:.))

4
задан svoltron 16 January 2019 в 08:37
поделиться

2 ответа

В CastExC нет h(). Может быть, поэтому.

Примечание. CastExA и CastExB не связаны между собой.

0
ответ дан ETO 16 January 2019 в 08:37
поделиться

Даже если CastExC наследует и CastExA<int>, и CstExB, определение h() в CstExB не переопределит «определение» h() в CastExA<int>, потому что CastExA<int> и CstExB ] не связаны. Если вы попытаетесь сделать это:

CastExBase* a2 = new CastExC();
CastExC* a3 = (CastExC*) a2;
a3->h();

Вы получите неоднозначный запрос на h(). Если вы хотите перегрузить, вам нужно сделать это вручную:

struct CastExC: protected CastExB, public CastExA<int> {
    virtual int h() override { return CastExB::h(); }
};
0
ответ дан Holt 16 January 2019 в 08:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: