gpt4 book ai didi

c++ - 如何调用原子成员函数指针

转载 作者:行者123 更新时间:2023-11-30 04:59:15 24 4
gpt4 key购买 nike

我在调用原子成员函数指针时遇到问题:

class test
{
typedef void(test::*ProcessPtr)();
std::atomic<ProcessPtr> _processPtr;
void process() {}
}

int main(int argc, char** argv)
{
test t;
t._processPtr = &test::process;
(t.*_processPtr)();
}

错误是:

t.cpp:238:6: 错误:“_processPtr”未在此范围内声明 (t.*_processPtr)();

不太确定问题出在哪里。您可以不遵循“原子”成员函数指针吗?

最佳答案

正如 super 所指出的,您需要使用该对象两次:

(t.*t._processPtr.load())();
^ ^ ^----- load() because it's an atomic variable
| |---- this loads the function pointer stored inside of t
|------- actual Object to call the member function pointer on

所以你最终得到这个:

int main(int argc, char** argv)
{
test t;
t._processPtr = &test::process;
(t.*t._processPtr.load())();
}

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

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