Typedef for static method

Typedef for static method

本文关键字:method static for Typedef      更新时间:2023-10-16

是否可以为方法创建一个typedef?我的意思是:

//namespace A{
//namespace B{
Car& Car::getInstance() //static! (sigleton)
{
  if(m_instance == nullptr)
  {
    m_instance = new Car();
  }
  return *m_instance;
}
//}
//}
// something like:
typedef A::B::Car::getInstance() l_car;

现在:

l_car.fake_method();

溶液?:指向该类型定义之后的函数的指针?

指向静态方法的指针的 typedef:

Car& Car::getInstance() 

与常规函数指针相同,如下所示:

typedef Car& (*CarMethod)();

你会像这样使用它:

CarMethod getCar = &Car::getInstance;
//...
Car& theCar = (*getCar)();

不过,我不确定这在单例中有什么用。

typedef(你可以从名称中猜到)是关于类型,而不是值。但是,您可以这样做

Car& Car::getInstance() {
    static Car *p = new Car;
    return *p;
}
Car& l_car = getInstance();

但是您无法在第一次使用 l_car 时创建单例实例,当然除了使用宏技巧:

#define l_car (Car::getInstance())

怎么样

A::B::Car& l_car = A::B::Car::getInstance();