静态函数在C++中调用非静态函数

CJA*_*LEE 11 c++ static

我有一个类::

Class Test
{
  public:
  void Check(){//dosomething};
  static void call(){//I want to call check()};
};
Run Code Online (Sandbox Code Playgroud)

因为call()是一个静态成员,所以它不能调用非静态函数,所以我认为在call()中使用Check()是创建Test指针然后指向Check(),但我认为它是不好,有更好的方法吗?我可以在静态函数中重写所有内容,所以我不需要再次调用Check(),但我想要的是重用Check()中的代码并避免重复代码.

Axe*_*xel 11

由于您需要一个实例,您必须创建一个实例,使用静态实例或将其传递给call():

Class Test
{
  private:
  static Test instance;

  public:
  void Check(){//dosomething};
  // use one of the following:
  static void call(Test& t){ t.check(); };
  static void call(){ Test t; t.check(); };
  static void call(){ instance.check(); };
};
Run Code Online (Sandbox Code Playgroud)

  • 如何设置实例变量? (3认同)