是否有任何机制允许在派生类中强制执行 protected 构造函数?
简单的例子:
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 派生的子类都有一个 protected 构造函数。
最佳答案
不,没有办法强制执行此操作。通常,基类在如何约束子类方面非常有限。 Base
不是,也不应试图负责监管所有可能编写碰巧继承自 Base
的类的人。
关于c++ - 在派生类中强制执行 protected 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33280272/