uro*_*012 2 c++ pointers c++11
在一个项目中,我遇到了以下代码行。
::std::unordered_map<std::string, Channel*(*)(Module*, const Parameters&)>;
Run Code Online (Sandbox Code Playgroud)
有人知道 Channel*(*) 是什么意思吗?和Channel**一样吗?这对我来说似乎令人困惑和过于复杂。
Channel 构造函数如下所示:
Channel(Module* module, const util::Parameters& parameters);
Run Code Online (Sandbox Code Playgroud)
这个:
Channel*(*)(Module*, const Parameters&)
Run Code Online (Sandbox Code Playgroud)
指向以 aModule*和 aconst Parameters&作为参数并返回 a的函数的指针Channel*。
有关更多详细信息,请参见此处:https : //en.cppreference.com/w/cpp/language/pointer
函数指针看起来很吓人,别名使它们的使用变得更加简单:
using fun = Channel*(Module*, const Parameters&);
fun* x = &some_function_with_right_signature;
// or
::std::unordered_map<std::string,fptr>;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |