Yas*_*med 2 c++ oop overloading
以下内容有效,但当我执行该(*this)(5)部分时感觉很丑。
struct MyStruct
{
void operator()(int a)
{
// Do something with "a"
}
void myFunc()
{
(*this)(5);
}
};
Run Code Online (Sandbox Code Playgroud)
我需要重载该()运算符并在其他类方法中使用它。
bol*_*lov 10
您有几个选择:
(*this)(5)
this->operator()(5)
要不就operator()(5)
创建一个从 中调用的方法operator(),例如:
void do_work(int a) { /* ... */ }
void operator()(int a) { do_work(a); }
void myFunc() { do_work(5); }
Run Code Online (Sandbox Code Playgroud)
无论您选择哪一个都只是个人品味问题。
只是为了好玩,这里还有一些(荒谬的)选项:
std::invoke(评论中提到):
std::invoke(&MyStruct::operator(), this, 5);
Run Code Online (Sandbox Code Playgroud)
auto call_op = std::mem_fn(&MyStruct::operator());
call_op(this, 5);
Run Code Online (Sandbox Code Playgroud)
拉姆达:
auto call_op = [this] (int a) { operator()(a); };
call_op(5);
Run Code Online (Sandbox Code Playgroud)
auto call_op = std::bind_front(&MyStruct::operator(), this);
call_op(5);
Run Code Online (Sandbox Code Playgroud)