&foo :: function和foo :: function有什么区别?

标记

我正在Linux上使用gtkmm库为GUI绘制一个简单菜单。

在下面的代码中,编译器抱怨无法解析地址

        sigc::mem_fun(*this, AppWindow::hide)));
                                         ^
appwindow.cpp:15:41: note:   could not resolve address from overloaded function

但是当我插入&可以编译

m_menu_app.items().push_back(MenuElem("Quit",
    sigc::mem_fun(*this, &AppWindow::hide)));

这有什么区别?hide函数不是仅是地址吗?

哥伦布

这是函数到指针转换[conv.func]的确切定义:

函数类型的左值T可以转换为“指针指向”的前值T结果是指向该函数的指针。55


55) 此转换永远不会应用于非静态成员函数,因为无法获得引用非静态成员函数的左值

因此,我们在正常的非成员函数1看到的衰减不适用,您需要显式获取地址。

IE

void f();

struct A {
    void f();
    static void g();
};


auto a = f; // Ok: auto deduced as void(*)()
auto b = A::f; // Error: A::f not an lvalue, auto cannot be deduced
auto c = A::g; // Ok: auto deduced as void(*)()


1 或静态成员函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“ function foo(){}”和“ foo(){}”之间的区别

来自分类Dev

Bash中的`declare foo`和`foo =`有什么区别?

来自分类Dev

ifeq($ {foo),)和ifndef foo有什么区别

来自分类Dev

$ foo === TRUE和TRUE === $ foo有什么区别

来自分类Dev

my $ foo和my($ foo)有什么区别?

来自分类Dev

ifeq($(foo),)和ifndef foo有什么区别

来自分类Dev

使用params [:foo]和@foo有什么区别?

来自分类Dev

Bash 中的 `declare foo` 和 `foo=` 有什么区别?

来自分类Dev

var foo = function(){...}()和var foo =(function(){...}())之间的区别

来自分类Dev

方法调用语法`foo.method()`和UFCS`Foo :: method(&foo)`有什么区别?

来自分类Dev

python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

来自分类Dev

<%= foo%>和$ {foo}之间的区别

来自分类Dev

<%= foo%>和$ {foo}之间的区别

来自分类Dev

`this instanceof String`和`“ foo” instanceof String`有什么区别?

来自分类Dev

TypeScript中的类型化数组-Array <Foo>和Foo []有什么区别?

来自分类Dev

foo(int arr [])和foo(int arr [10])有什么区别?

来自分类Dev

当sub Foo :: bar {}和sub bar {}都属于包Foo时,有什么区别?

来自分类Dev

foo.toString()和Object.prototype.toString.call(foo)有什么区别?

来自分类Dev

Boolean(foo.bar)和!! foo.bar有什么区别?

来自分类Dev

TypeScript中的类型化数组-Array <Foo>和Foo []有什么区别?

来自分类Dev

直接使用shell命令(例如foo)和使用$(foo)有什么区别?

来自分类Dev

Scala中的s“ foo $ bar”和“ foo%s” .format(bar)有什么区别

来自分类Dev

(?=。* foo \ b)和(?=。* foo)\ b之间的区别

来自分类Dev

@ foo,self.foo和foo之间的区别?

来自分类Dev

PHP:{$ foo}和$ {foo}之间有区别吗

来自分类Dev

“使用名称空间栏”和“使用Bar :: Foo”之间有什么区别?

来自分类Dev

如果有什么区别![[ foo ]] 并且如果 [[ ! foo ]] 在 Bash 中?

来自分类Dev

为什么resolve(“。/ .. / ....”)和resolve(“ foo”)之间有区别

来自分类Dev

function foo that has the type ’a * ’a -> int

Related 相关文章

  1. 1

    “ function foo(){}”和“ foo(){}”之间的区别

  2. 2

    Bash中的`declare foo`和`foo =`有什么区别?

  3. 3

    ifeq($ {foo),)和ifndef foo有什么区别

  4. 4

    $ foo === TRUE和TRUE === $ foo有什么区别

  5. 5

    my $ foo和my($ foo)有什么区别?

  6. 6

    ifeq($(foo),)和ifndef foo有什么区别

  7. 7

    使用params [:foo]和@foo有什么区别?

  8. 8

    Bash 中的 `declare foo` 和 `foo=` 有什么区别?

  9. 9

    var foo = function(){...}()和var foo =(function(){...}())之间的区别

  10. 10

    方法调用语法`foo.method()`和UFCS`Foo :: method(&foo)`有什么区别?

  11. 11

    python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

  12. 12

    <%= foo%>和$ {foo}之间的区别

  13. 13

    <%= foo%>和$ {foo}之间的区别

  14. 14

    `this instanceof String`和`“ foo” instanceof String`有什么区别?

  15. 15

    TypeScript中的类型化数组-Array <Foo>和Foo []有什么区别?

  16. 16

    foo(int arr [])和foo(int arr [10])有什么区别?

  17. 17

    当sub Foo :: bar {}和sub bar {}都属于包Foo时,有什么区别?

  18. 18

    foo.toString()和Object.prototype.toString.call(foo)有什么区别?

  19. 19

    Boolean(foo.bar)和!! foo.bar有什么区别?

  20. 20

    TypeScript中的类型化数组-Array <Foo>和Foo []有什么区别?

  21. 21

    直接使用shell命令(例如foo)和使用$(foo)有什么区别?

  22. 22

    Scala中的s“ foo $ bar”和“ foo%s” .format(bar)有什么区别

  23. 23

    (?=。* foo \ b)和(?=。* foo)\ b之间的区别

  24. 24

    @ foo,self.foo和foo之间的区别?

  25. 25

    PHP:{$ foo}和$ {foo}之间有区别吗

  26. 26

    “使用名称空间栏”和“使用Bar :: Foo”之间有什么区别?

  27. 27

    如果有什么区别![[ foo ]] 并且如果 [[ ! foo ]] 在 Bash 中?

  28. 28

    为什么resolve(“。/ .. / ....”)和resolve(“ foo”)之间有区别

  29. 29

    function foo that has the type ’a * ’a -> int

热门标签

归档