gpt4 book ai didi

c++ - 通过指向类成员的指针调用函数

转载 作者:太空狗 更新时间:2023-10-29 20:39:09 25 4
gpt4 key购买 nike

在下面的代码中:

class foo
{
public:
void foo_function() {};
};

class bar
{
public:
foo foo_member;

void bar_function(foo bar::*p_foo)
{
// what is the corrct sintax for following:
this->*p_foo->foo_function(); // expression must have a pointer type??
}
};


int main()
{
foo foo_obj;
bar bar_obj;
typedef foo bar::*p_foo;
p_foo blah = &bar::foo_member;
bar_obj.bar_function(blah);
return 0;
}

使 bar::bar_function 工作的正确语法是什么?

最佳答案

这适用于 ideone :

void bar_function(foo bar::*p_foo)
{
(this->*p_foo).foo_function();
}

关键在于拥有正确的间接级别。由于 p_foo 是指向成员的指针,我们需要在尝试从 this 访问它之前取消引用它。此时,您拥有了实际的 foo_member 对象,而不是指向它的指针,因此您可以通过点符号调用它的 foo_function

关于c++ - 通过指向类成员的指针调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com