C++ 从c+中的任意类继承+;?
是否可以设计一个从基类组的任何一个继承的类?我希望能够写出以下内容:C++ 从c+中的任意类继承+;?,c++,C++,是否可以设计一个从基类组的任何一个继承的类?我希望能够写出以下内容: 派生类:public ArbitraryBase{ 公众: 派生():任意基(){} ... }; 其中,arbirybase可以是编译时确定的某个基类。我有一组基类,我想从中派生相同的类。有没有一种方法可以避免为每个基类编写单独的派生类?如果在编译时确实确定了,您可以将派生类作为模板: template<class T> class Derived : public T { public:
派生类:public ArbitraryBase{
公众:
派生():任意基(){}
...
};
其中,
arbirybase
可以是编译时确定的某个基类。我有一组基类,我想从中派生相同的类。有没有一种方法可以避免为每个基类编写单独的派生类?如果在编译时确实确定了,您可以将派生类作为模板:
template<class T>
class Derived : public T {
public:
Derived() {}
...
};
模板
派生类:public T{
公众:
派生(){}
...
};
您可以稍后通过提供基本类型来创建并实例化此类:
int main() {
Derived< ??? > my_object;
...
}
intmain(){
派生的<??>我的\u对象;
...
}
其中
?
是获取派生类型的编译时方法。如果在编译时确实确定了派生类型,则可以将派生类作为模板:
template<class T>
class Derived : public T {
public:
Derived() {}
...
};
模板
派生类:public T{
公众:
派生(){}
...
};
您可以稍后通过提供基本类型来创建并实例化此类:
int main() {
Derived< ??? > my_object;
...
}
intmain(){
派生的<??>我的\u对象;
...
}
其中
?
是获取派生类型的编译时方法。您可以通过模板来实现这一点。使用
template<typename T>
class Derived : public T
{
public:
Derived() : T() {}
// or just use if actually need to provide a default constructor
Derived() = default;
};
现在d
是从Base1
继承的派生的
如果需要从任意数量的基继承,则可以使用可变模板,如
template<typename... Bases>
class Derived : public Bases...
{
public:
Dervied() : Bases()... {}
// or just use if actually need to provide a default constructor
Derived() = default;
};
模板
派生类:公共基。。。
{
公众:
Dervied():base()…{}
//或者,如果实际需要提供默认构造函数,只需使用
派生()=默认值;
};
它的用途就像
Derived<Base1, Base2, ..., BaseN> d;
d;
您可以通过模板执行此操作。使用
template<typename T>
class Derived : public T
{
public:
Derived() : T() {}
// or just use if actually need to provide a default constructor
Derived() = default;
};
现在d
是从Base1
继承的派生的
如果需要从任意数量的基继承,则可以使用可变模板,如
template<typename... Bases>
class Derived : public Bases...
{
public:
Dervied() : Bases()... {}
// or just use if actually need to provide a default constructor
Derived() = default;
};
模板
派生类:公共基。。。
{
公众:
Dervied():base()…{}
//或者,如果实际需要提供默认构造函数,只需使用
派生()=默认值;
};
它的用途就像
Derived<Base1, Base2, ..., BaseN> d;
d;
“其中,任意基
可以是编译时确定的某个基类。”它是如何确定的?可能的解决方案可能取决于此。嗯。。。我不确定它到底是如何工作的。当以某种方式构造派生类时,我需要指定从哪个基类继承。在构造基类实例之前,不能构造派生类。基类实例总是在派生类实例之前构造。“whereArbitraryBase
可以是编译时确定的某个基类。”它是如何确定的?可能的解决方案可能取决于此。嗯。。。我不确定它到底是如何工作的。当以某种方式构造派生类时,我需要指定从哪个基类继承。在构造基类实例之前,不能构造派生类。基类实例总是在派生类实例之前构造代码>?@RinatVeliakhmedov则它不会从基继承。不过我还是要删除它,因为OP用Derived
更新了他们的代码,并拥有自己的构造函数代码>?@RinatVeliakhmedov则它不会从基继承。不过我要删除它,因为OP用Derived
更新了他们的代码,并拥有自己的构造函数。