Анимация кода SVG не работает на краю, но работает в любом другом браузере [закрыто]

Конструктор shared_ptr<T> принимает указатель типа T* в качестве своего аргумента, предположительно указывает на динамически выделенный ресурс (или, по крайней мере, то, что может быть освобождено от делетера). С другой стороны, make_shared делает конструкцию для вас и принимает аргументы конструктора напрямую.

Итак, либо вы говорите это:

std::shared_ptr<Foo> p(new Foo('a', true, Blue));

Или, намного лучше и эффективнее :

auto p = std::make_shared<Foo>('a', true, Blue);

Последняя форма заботится о выделении и построении для вас, и в этом процессе создается более эффективная реализация.

Конечно, вы могли бы также сказать make_shared<Foo>(Foo('a', true, Blue)) , но это просто создаст ненужную копию (которая может быть отменена), и, что более важно, она создает ненужную избыточность. [ Изменить ] Для инициализации вашего вектора это может быть лучшим методом:

auto p = std::make_shared<Func>(std::vector<std::string>({"a", "b", "c"}));

Важным моментом является то, что make_shared выполняет динамическое распределение для вас, в то время как конструктор shared-ptr делает не , а вместо этого переходит в собственность .

-1
задан Jason Aller 17 January 2019 в 16:19
поделиться

1 ответ

На момент написания статьи (январь 2019 г.) анимация stroke-dashoffset не поддерживалась в Microsoft Edge, и учитывая послужной список Microsoft и быстрые улучшения Edge, можно ожидать, что она не будет работать в ближайшее время.

Пожалуйста, обратитесь к https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6493460/

К сожалению, моя рекомендация правильно отображать анимацию в браузерах, отличных от IE / Edge, и показывать конечный результат только в IE / Edge (чтобы они по-прежнему видели что-то на странице). Чтобы определить текущий браузер пользователя, обратитесь к Как определить браузер Safari, Chrome, IE, Firefox и Opera? .

0
ответ дан Andrew Fan 17 January 2019 в 16:19
поделиться