|
想做一个虚的singleton,可以返回实际指向子类的指针。
如ACE_Singleton<AbstractA*, ACE_Null_Mutex>::instance() 返回的实际上是一个ConcreteA*。
但是ACE_Singleton不支持重设封装的底层singleton,只好自己继承一下,自己实现:
class AbstractASingleton : public ACE_Singleton<AbstractA*, ACE_Null_Mutex> {
protected:
static void instance(AbstractA* aa);
};
void AbstractASingleton::instance(AbstractA* aa) {
instance_ = aa;
}
但是G++编译器死活报错:error: `AbstractA*ACE_Singleton<AbstractA*, ACE_Null_Mutex>::instance_' is protected
ace/Singleton.h 中的源码中instance_是protected,但是 AbstractASingleton是子类啊,应该有权限访问的,吐血。。。。
[ 本帖最后由 wishel 于 2008-8-21 15:06 编辑 ] |
|