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