Anton
воооот) тогда след. вопрос. если у меня есть два объекта foo1 foo2 типа Foo, то как интерпретировать &Foo::sync?
Denis
биндить объект
Anton
ну т.е. bind(&foo.sync) ?
Anton
без & наверное
Denis
В пайтоне, например, методы класса это простые функции, живущие в пространстве имён класса, и принимающие объект первым аргументом, так?
Denis
Ну вот тут то же самое почти
Anton
так, примерно
Denis
объект биндишь как первый аргумент
Anton
короче в плюсах просто передача this неявная
Anton
насколько я понял
Ibragim
Не проверял, но по смыслу так
auto f = &Foo:sync; // адрес метода
f(&foo1); // foo1.sync
f(&foo2); // foo2.sync
Denis
Охохох
Anton
ладно, буду пробовать. надо бы разобраться в функциональных объектах и биндинге получше. плаваю пока в этом)) спасибо!
Denis
MyClass myObj1;
MyClass myObj2;
auto func = std::bind( &MyClass::Method, myObj1 );
func(); // myObj1.Method();
Denis
Что делать, если есть другие аргументы
Denis
class MyClass{
public:
void Method( int, std::string );
};
Denis
Anton
waaat?)) т.е. при биндинге передаем указатель на метод а агрументом тащим сам объект?
Denis
namespase ph = std::placeholder;
auto func = std::bind( &MyClass::Method, myObj1, 100, ph::1 );
func( "string" ); // myObj1.Method( 100, "string" );
Denis
Denis
Объект это просто первый аргумент метода
Denis
Просто неявный
Anton
А как иначе?
пошел читать про bind)) спасибо за помощь!
Denis
Надо же как-то сказать из какого объекта вызвать метод MyClass::Method
Denis
Дак бинд по сути и не надо
Denis
можешь обернуть всё в лямбду
Anton
ну мне надо разобраться что конкретно бинд делает. что берет и что возвращает.
Denis
MyClass myObj1;
auto func = [&]()
{
myObj1.MyMethod();
};
Sheridan
Denis
Бинд возвращает invokable объект, созданный на основе переданного invokable объекта путём замены некоторых аргументов на константные или переменные
Denis
Типо того
Michael
так вот чем ты в отпуске занимаешься)
Denis
Блин, откуда ты тут взялся xD
Я уже собираю сумку xD
Anton
еще всплыл вопрос... Если у меня нет копирующего конструктора, то как bind использовать? у меня синглтон. Bind ругается на класс без копирующего конструктора
Michael
если не ошибаюсь можно по ссылке передавать
Michael
попробуй std::ref
Michael
а вообще у тебя там указатель должен передаваться
Anton
std::bind(&Foo::sync, &foo); вот так)) спасибо!
Andrei
& плохо.
Andrei
std::ref - правильный совет.
Andrei
Но вообще всё равно плохо.
Andrei
надо следить чтобы объект жил вплоть то вызова метода.
Deleted Account
Andrei
Не выйдет.
Andrei
unique_ptr — noncopyable
Andrei
а у человека в векторе std::function
Andrei
Они требуют копируемости.
Deleted Account
ну тогда пусть сделает структуру с 2 векторами, один который счас есть, второй с уник птр на обджэкты
Deleted Account
хотя зависит от контекста, чъи это объекты
Deleted Account
я недочитал даже
🦥Alex Fails
Anna
Всем привет, тут есть кто-нибудь, кому плюсов уже мало и хочет перебазироваться на Go?
Anna
Evgenii
Шикарная формулировка, должен признать)
Zakhar
Поясните новичку за космический эффект go
Evgenii
Zakhar
"удобное" написание шаблонный функций и структур - пока всё, что я заметил
Igor
Dima
Go - следующий уровень развития крестов
Крылатый
Штоу
Крылатый
Нет.
Zakhar
Лол
Igor
Эммммммм
серёжа
Крылатый
Не с D перепутали?
Igor
Может с Rust перепутали?
Dima
Dima
Dima
Surreal
Ловите тролля.
Крылатый
Слишком толсто.
Zakhar
мде
Крылатый
Здесь таких не любят.
Dima
спокойно ребята, я вас слушаю
Dima
ваши аргументы
Крылатый
В супапро.
Крылатый
Или даже флудилку/холиварню.