有没有机制可以强制在派生类中实现受保护的构造函数?
简单示例:
template<typename T>
class Factory;
class Base {
template<typename T>
friend class Factory;
protected:
Base();
};
class Child : public Base {
public:
Child(); // this should lead to a compile time error
};
<template T>
class Factory {
Base* GetNew()
{
BOOST_STATIC_ASSERT(boost::is_base_of<Base, T>::value);
Base* b = new T();
b->doStuff();
return b;
}
};
我希望Child类只能由工厂创建,并强制所有继承自Base的子类具有受保护的构造函数。