Typedef用于静态方法

时间:2014-02-07 23:31:10

标签: c++ typedef

是否可以为方法创建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后的函数指针?

3 个答案:

答案 0 :(得分:3)

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

Car& Car::getInstance() 

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

typedef Car& (*CarMethod)();

您可以使用它:

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

我不确定在Singleton中有什么用途。

答案 1 :(得分:1)

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

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

Car& l_car = getInstance();

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

#define l_car (Car::getInstance())

答案 2 :(得分:0)

怎么样?
A::B::Car& l_car = A::B::Car::getInstance();