我有一堂课,比如:
Class Test { public: void Check(){//dosomething}; static void call(){//I want to call check()}; };
因为call()是静态成员,所以它不能调用非静态函数,所以我认为在call()中使用Check()就是创建Test指针,然后指向Check(),但我认为这是不好,有更好的方法吗? 我可以重写静态函数中的所有内容,因此我不需要再次调用 Check(),但我想要的是重用 Check() 中的代码并避免重复的代码。
由于您需要一个实例,因此您要么必须创建一个实例,使用静态实例,要么将其传递给call():
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(); }; };