Abb*_*sal 3 c++ multithreading iso
我正在尝试以下代码:
std::thread t(&(Transmitter::sender), this, some_variables);
Run Code Online (Sandbox Code Playgroud)
其中sender是同一个类的成员函数,从该方法调用上面的行.
我收到警告:
Transmitter.h: In member function 'int Transmitter::transmit_streams(std::vector<std::vector<single_stream_record> >, int, Receiver&)':
Transmitter.h:81:44: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say '&Transmitter::sender' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
虽然它编译并运行良好.如何删除此警告.
我的g ++是4.6.3,我用-std = c ++ 0x编译代码.
错误消息非常清楚.
ISO C++禁止获取非限定或带括号的非静态成员函数的地址,以形成指向成员函数的指针.说'&Transmitter :: sender'[-fpermissive]
仅当使用显式&时,才会形成指向成员的指针,并且其操作数是未括在括号中的qualified-id.[注意:也就是说,表达式&(qualified-id),其中qualified-id括在括号中,不形成"指向成员的指针"类型的表达式.也不是qualified-id,因为没有从非静态成员函数的qualified-id到类型"指向成员函数的指针"的隐式转换,因为从函数类型的左值到类型"指向函数的指针" ([conv.func]).即使在unqualified-id类的范围内,也不是&nonqualified-id指向成员的指针. - 结束说明]
你需要使用:
std::thread t(&Transmitter::sender, this, some_variables);
Run Code Online (Sandbox Code Playgroud)
看这个演示
| 归档时间: |
|
| 查看次数: |
6772 次 |
| 最近记录: |