我甚至不确定是否可以这样做。然而,这就是现在的情况。
我有一个基类:
class Base {
public:
virtual void fun();
private:
int variable;
}
考虑我有两个派生类:
class Derived1 : public Base {
public:
virtual void fun() override;
virtual void moreFun();
private:
int variable;
}
和
class Derived2 : public Base {
public:
virtual void fun() override;
virtual void moreFun();
private:
int variable;
}
我想写一个类 Derived3 ,可以从 Derived1 或 <派生EM> Derived2的 即可。
我们的想法是让 Derived3 在其他派生类之一上扩展某些功能。我不打算在运行时切换类,但想以类似于模板的方式进行初始化。
Template <class T>
class Derived3 : public T {
public:
virtual void moreFun() override;
private:
int variable;
}
是否可以确保Derived3类只能来自 Derived1 或 Derived2 ?
答案 0 :(得分:1)
std::is_base_of
和std::is_same
可以满足您的需求。只需将其添加到类主体中,不要忘记包含文件:
Base
如果您只想允许特定的派生类而不是所有派生类,或者想要禁止undefined
本身,请查看{{3}}。