C++ 子类隐藏父类';s构造函数
我有一个类C++ 子类隐藏父类';s构造函数,c++,inheritance,C++,Inheritance,我有一个类C,它继承了类p template <typename T> class P{ public: P(); P(T* sometype); }; class C: public P<sometype>{ }; 模板 P类{ 公众: P(); P(T*sometype); }; 丙级:公共体育{ }; 现在Chidep(sometype*)constructor?但是我需要P(ometype*)构造函数在C中可用。我是否需要编写另一个调用父构造函
C
,它继承了类p
template <typename T>
class P{
public:
P();
P(T* sometype);
};
class C: public P<sometype>{
};
模板
P类{
公众:
P();
P(T*sometype);
};
丙级:公共体育{
};
现在
C
hidep(sometype*)
constructor?但是我需要P(ometype*)
构造函数在C
中可用。我是否需要编写另一个调用父构造函数的C(sometype*)
?或者有一些简单的突破。我不知道;我不想使用C++11
功能 如果需要通过子类型指定基类类型T
,请尝试以下操作:
template<typename T>
class C : public P<T> {
public:
C(T* pT): P(pT) {}
}
int* pMyInt;
C<int> myClass(mMyInt);
模板
丙级:公共体育{
公众:
C(T*pT):P(pT){}
}
int*pMyInt;
C myClass(百万吨级);
如果需要通过子类型指定基类类型T
,请尝试以下操作:
template<typename T>
class C : public P<T> {
public:
C(T* pT): P(pT) {}
}
int* pMyInt;
C<int> myClass(mMyInt);
模板
丙级:公共体育{
公众:
C(T*pT):P(pT){}
}
int*pMyInt;
C myClass(百万吨级);
您应该编写一个C构造函数,该构造函数接受相同的参数并将其传递给其父类,如下所示:
C(T* sometype)
: P(sometype)
{
}
template <typename T>
class C : public P<T> {
public:
C(T* sometype):P<T>(sometype) { }
};
您应该编写一个C构造函数,该构造函数接受相同的参数并将其传递给其父类,如下所示:
C(T* sometype)
: P(sometype)
{
}
template <typename T>
class C : public P<T> {
public:
C(T* sometype):P<T>(sometype) { }
};
是的,构造函数不是继承的。您需要为
C
编写一个新的:
template <typename T>
class C : public P<T> {
public:
C(T* sometype) { /*...*/ }
};
最后一句话:C++11实际上提供了构造函数继承功能。由于您对使用C++11特性不感兴趣(这确实是一个遗憾),而且由于该特性还没有被许多编译器实现,我将不详细介绍。对要素定义的引用是。是,构造函数不是继承的。您需要为
C
编写一个新的:
template <typename T>
class C : public P<T> {
public:
C(T* sometype) { /*...*/ }
};
最后一句话:C++11实际上提供了构造函数继承功能。由于您对使用C++11特性不感兴趣(这确实是一个遗憾),而且由于该特性还没有被许多编译器实现,我将不详细介绍。对特征定义的引用为
现在C会隐藏p(sometype*)构造函数吗
是的,在某种意义上,C
不继承p的构造函数。因此,C
将不会有父类的构造函数可供该类的用户使用
但我需要p(ometype*)constructor在C中可用
这是可能的:您只需直接调用它:
P::P(sometype*)
现在C会隐藏p(sometype*)构造函数吗
是的,在某种意义上,C
不继承p的构造函数。因此,C
将不会有父类的构造函数可供该类的用户使用
但我需要p(ometype*)constructor在C中可用
这是可能的:您只需直接调用它:
P::P(sometype*)
将C视为模板有什么好处?将C视为模板允许您在构建C对象时指定基类中T的类型如果您有输入错误,则应为
class C:public P{
将C视为模板有什么好处?将C视为模板允许您在构造C对象时指定基类中T的类型如果您有输入错误,则应为类C:public P{
是否存在从父类中提取构造函数的using关键字?@DiproSen是的,但仅在C++11中。请参阅。是否存在从父类中提取构造函数的using关键字?@DiproSen是的,但仅在C++11中。请参阅。父类构造函数创建父对象。在子类中继承它没有意义:它的co构造函数显然应该创建一个子对象。不过,父类构造函数可用于在子对象内创建父对象。虽然不是完全重复,但非常接近:在C++03中,如果不在C中创建一个将手动转发调用的构造函数,则无法完成此操作;在C++11中,您可以继承父类构造函数类构造函数创建父对象。在子类中继承父对象没有意义:它的构造函数显然应该创建子对象。但是,父类构造函数可以在子对象中创建父对象。不是完全重复,但非常接近:在C++03中,如果不创建构造函数,这是无法完成的或者在将手动转发调用的C中,在C++11中,您可以继承构造函数