首页 > 解决方案 > 如何不使用“instance.function()”将“this”指针发送到函数?

问题描述

我可以不使用.运算符将​​实例发送到函数吗?

例如:

// header file
class A 
{
public:
    void foo() {std::cout << "Hello" << std::endl;}
};
// main file
A instance = new A;
instance.foo();
// instead do something like this
A::foo(instance);

我可以做这样的事情吗?

标签: c++oop

解决方案


是的,您可以间接通过std::invoke

#include <functional>
#include <iostream>

struct A {
  void foo() {
    std::cerr << "hi\n";
  }
};

int main() {
  A a;
  std::invoke(&A::foo,a);
}

但是std::invoke' 的实现可能会在内部仅应用.*运算符。


推荐阅读