CSS @ font-face не работает в IE8

Я пробовал читать несколько статей о том, как бороться с пользовательскими шрифтами в IE, но они никогда не работали для меня. Я пытался преобразовать шрифты в EOT , но это тоже не сработало. Я не уверен, что делаю неправильно, поэтому я опубликую свой код

@font-face {
  font-family: "Klavika Regular";
    src: url('../fonts/klavika.eot');
    src: local('☺'), url('../fonts/klavika.woff') format('woff'), url('../fonts/klavika.ttf') format('truetype'), url('../fonts/klavika.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}
-121--721382- Используя общие объекты std:: function с функциями-членами в одном классе Для одного класса я хочу сохранить некоторые указатели функций на функции-члены одного класса в одной карте, хранящей объекты std:: function. Но я проваливаюсь прямо в начале с этим кодом: класс Foo {...

Для одного класса требуется сохранить некоторые указатели функций для члена функций одного класса в одной карте , хранящей объекты std:: function . Но я провалился прямо в начале с этим кодом:

class Foo {
    public:
        void doSomething() {}
        void bindFunction() {
            // ERROR
            std::function<void(void)> f = &Foo::doSomething;
        }
};

я получаю error C2064: term не вычисляет функцию, принимающую 0 аргументов в xxcallobj в сочетании с некоторыми странными ошибками создания экземпляров шаблона. В настоящее время я работаю над Windows 8 с Visual Studio 2010/2011 и над Win 7, с VS10 она также не работает. Ошибка должна основываться на некоторых странных правилах C++, которым я не придерживаюсь.

EDIT: Я НЕ использую boost. Это C++ 11 интегрирован в компилятор MS.

146
задан Max 17 January 2015 в 12:30
поделиться

1 ответ

К сожалению, C++ не позволяет Вам непосредственно получать вызываемый объект, относящийся к объекту и одному из, его - функции членства. "& Нечто:: doSomething" дает Вам "подсказку к функции членства", которая относится к функции членства, но не связанный объект.

существует два пути вокруг этого, нужно использовать станд.:: свяжите для привязки "указателя на функцию членства" к этому указателю. Другой должен использовать лямбду, которая получает этот указатель и называет функцию членства.

std::function<void(void)> f = std::bind(&Foo::doSomething, this);
std::function<void(void)> g = [this](){doSomething();};

я предпочел бы позже.

С g ++, по крайней мере, обязательный функция членства к этому приведет к объектные трехочковые в размере, присваивая это станд.:: функция приведет к динамическому выделению памяти.

, С другой стороны, лямбда, которая получает это, является только одним указателем в размере, присваивая его станд.:: функция не приведет к динамическому выделению памяти с g ++.

, В то время как я не проверил это с другими компиляторами, я подозреваю, что подобные результаты будут найдены там.

0
ответ дан 23 November 2019 в 22:41
поделиться
Другие вопросы по тегам:

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