草庐IT

继承权

全部标签

c++ - std::shared_ptr 和继承

我在继承类的shared_ptr之间的自动类型转换方面遇到了一些问题。我的类结构如下,一个基类Base和两个派生类Derived1和Derived2。//BaseclassclassBase{protected:......public:Base()=default;virtual~Base()=default;virtualvoidrun()=0;......};//DerivedclassclassDerived1:Base{protected:......public:Derived1()=default;virtual~Derived1()=default;voidrun(){

c++ - std::shared_ptr 和继承

我在继承类的shared_ptr之间的自动类型转换方面遇到了一些问题。我的类结构如下,一个基类Base和两个派生类Derived1和Derived2。//BaseclassclassBase{protected:......public:Base()=default;virtual~Base()=default;virtualvoidrun()=0;......};//DerivedclassclassDerived1:Base{protected:......public:Derived1()=default;virtual~Derived1()=default;voidrun(){

c++ - MSVC 中的虚拟继承错误

看来我的问题是MSVC中的错误。我正在使用带有ServicePack1的VisualStudio2008,并且我的代码适用于GCC(在codepad.org上测试过)。关于这个错误的任何官方信息?任何想法如何解决它?VS2010中的bug修复了吗?我们将不胜感激所有见解。代码:structBase{Base(inti=0):i(i){}virtual~Base(){}virtualBase*clone()const=0;protected:inti;};structA:virtualpublicBase{A(){}virtualA*clone()const=0;};structB:pu

c++ - MSVC 中的虚拟继承错误

看来我的问题是MSVC中的错误。我正在使用带有ServicePack1的VisualStudio2008,并且我的代码适用于GCC(在codepad.org上测试过)。关于这个错误的任何官方信息?任何想法如何解决它?VS2010中的bug修复了吗?我们将不胜感激所有见解。代码:structBase{Base(inti=0):i(i){}virtual~Base(){}virtualBase*clone()const=0;protected:inti;};structA:virtualpublicBase{A(){}virtualA*clone()const=0;};structB:pu

c++ - 有没有我们*需要*在 C++ 中 protected 继承的例子?

虽然我见过需要private继承的罕见情况,但我从未遇到需要protected继承的情况。有人有例子吗? 最佳答案 这里的人似乎误认为protected类继承和protected方法。FWIW,我从未见过有人使用protected类继承,如果我没记错的话,我认为Stroustrup甚至认为“protected”级别是c++中的错误。如果您删除该保护级别并仅依赖公共(public)和私有(private),那么您将无能为力。 关于c++-有没有我们*需要*在C++中protected继承的

c++ - 有没有我们*需要*在 C++ 中 protected 继承的例子?

虽然我见过需要private继承的罕见情况,但我从未遇到需要protected继承的情况。有人有例子吗? 最佳答案 这里的人似乎误认为protected类继承和protected方法。FWIW,我从未见过有人使用protected类继承,如果我没记错的话,我认为Stroustrup甚至认为“protected”级别是c++中的错误。如果您删除该保护级别并仅依赖公共(public)和私有(private),那么您将无能为力。 关于c++-有没有我们*需要*在C++中protected继承的

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

c++ - 由于私有(private)继承而无法访问的类型

g++拒绝我访问一个类型,只是因为它恰好是一个私有(private)祖父。这有意义吗?structA{};structB:privateA{};structC:B{voidfoo(Aconst&a){}};编译得到:1:10:error:‘structAA::A’isinaccessible6:12:error:withinthiscontext我的意思是:我从不想以祖先的身份访问A。事实上,如果A是B的私有(private)祖先,那么除了B(即C)?当然,我可以使用protected继承,但在我的情况下它并没有什么意义。 最佳答案

c++ - 由于私有(private)继承而无法访问的类型

g++拒绝我访问一个类型,只是因为它恰好是一个私有(private)祖父。这有意义吗?structA{};structB:privateA{};structC:B{voidfoo(Aconst&a){}};编译得到:1:10:error:‘structAA::A’isinaccessible6:12:error:withinthiscontext我的意思是:我从不想以祖先的身份访问A。事实上,如果A是B的私有(private)祖先,那么除了B(即C)?当然,我可以使用protected继承,但在我的情况下它并没有什么意义。 最佳答案