LINUX.ORG.RU

boost bind

 ,


0

1

Почему bind со свободной функцией используется просто с именем этой функции, а член класса передаётся по адресу &MyClass::function. Логично предположить, что обычная функция тоже по адресу должна передаваться, не?

★★★★★

Передавай с & - не проблема.

то, что оно без него - это наследие Си. В Си раньше можно было только с & писать, потом добавили такой способ.

anonymous
()

Логично предположить, что обычная функция тоже по адресу должна передаваться, не?

Она и передаётся по адресу.

DarkEld3r ★★★★★
()
Ответ на: комментарий от UVV

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

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от UVV

vtb и прочие «виртуал» не андерстенд?

а так да обычным С копулятором имя(массива и функций) деградирует до адреса)

qulinxao ★★☆
()
Ответ на: комментарий от yoghurt

Ну вот там ниже написано:

pt2Function = DoIt;      // short form
pt2Function = &DoMore;   // correct assignment using address operator
Т.е. в плюсах короткая форма недопустима?

UVV ★★★★★
() автор топика
Ответ на: комментарий от qulinxao

Можно подумать, что имя метода в vt раскрывается не до адреса, а до чего-то другого.

UVV ★★★★★
() автор топика
Ответ на: комментарий от qulinxao
struct Foo {
    void bar() {}
};

int main() {
    auto a = &Foo::bar;
    auto b = Foo::bar;
}
test.cpp:7:19: error: call to non-static member function without an object argument
    auto b = Foo::bar;
             ~~~~~^~~
1 error generated.
mix_mix ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.