Мало дополнения. Можно использовать boost::function
, для создания функторов из функций и методов, как это:
class Foo
{
public:
void operator () (int i) { printf("Foo %d", i); }
};
void Bar(int i) { printf("Bar %d", i); }
Foo foo;
boost::function f(foo);//wrap functor
f(1);//prints "Foo 1"
boost::function b(&Bar);//wrap normal function
b(1);//prints "Bar 1"
и можно использовать повышение:: свяжите для добавления состояния к этому функтору
boost::function f1 = boost::bind(foo, 2);
f1();//no more argument, function argument stored in f1
//and this print "Foo 2" (:
//and normal function
boost::function b1 = boost::bind(&Bar, 2);
b1();// print "Bar 2"
и самый полезный с повышением:: свяжите и повысьте:: функция можно создать функтор из метода класса, на самом деле это - делегат:
class SomeClass
{
std::string state_;
public:
SomeClass(const char* s) : state_(s) {}
void method( std::string param )
{
std::cout << state_ << param << std::endl;
}
};
SomeClass *inst = new SomeClass("Hi, i am ");
boost::function< void (std::string) > callback;
callback = boost::bind(&SomeClass::method, inst, _1);//create delegate
//_1 is a placeholder it holds plase for parameter
callback("useless");//prints "Hi, i am useless"
можно создать список или вектор функторов
std::list< boost::function > events;
//add some events
....
//call them
std::for_each(
events.begin(), events.end(),
boost::bind( boost::apply(), _1, e));
существует одна проблема со всем этим материалом, ошибка компилятора обменивается сообщениями, не человекочитаемо:)
нет, Перечный Flash не небезопасен, потому что это не открытый исходный код. Google инвестирует много ресурсов, чтобы работать над Перечным Flash и сохранить его безопасным и надежным. Модель программного обеспечения является очень безопасной, и Вы не должны волноваться об использовании ее.
На самом деле, альтернативные Flash player с открытым исходным кодом, Скрежет и Lightspark, вероятно, не будут больше безопасны, чем Перечный Flash.
, Если Вы хотите остаться максимально с открытым исходным кодом и все еще сохранить большую функциональность, Хром является способом пойти.
Быть открытым исходным кодом не обязательно означает, что код будет тщательно исследуемым общественностью, или что это будет полностью контролироваться и правильно тщательно исследоваться, даже если это будет. Это просто означает, что это может быть.
Для Flash, у Вас нет большого выбора. Существуют некоторые плагины Flash с открытым исходным кодом, но очень большое количество сайтов просто не будет работать в них, поскольку сайты потребуют намного более новых версий Flash. Используете ли Вы основанный на перце плагин, который Google создает в Chrome (, Хром является открытым исходным кодом и не будет включать плагин Flash), или последняя поддерживаемая версия плагина Adobe Flash, который доступен, Вы все еще используете собственное программное обеспечение. Единственный истинный способ не использовать собственное программное обеспечение не состоит в том, чтобы использовать Flash вообще.