草庐IT

private-inheritance

全部标签

c++ - 指向类的私有(private)数据成员的指针

是否可以声明指向类的私有(private)数据成员的指针?如果是这样,你是怎么做的? 最佳答案 是的,与创建任何其他指针的方式相同。当然,要注意的是,由于成员是私有(private)的,因此您只能在类内部创建指针,您可以在其中看到该成员。classA{public:int*getFooPtr(){return&foo;//OK;Insidetheclassfooisvisible}private:intfoo;};intmain(){Aa;int*p_foo1=&a.foo;//Illegal;Outsidetheclass,foo

c++ - 指向类的私有(private)数据成员的指针

是否可以声明指向类的私有(private)数据成员的指针?如果是这样,你是怎么做的? 最佳答案 是的,与创建任何其他指针的方式相同。当然,要注意的是,由于成员是私有(private)的,因此您只能在类内部创建指针,您可以在其中看到该成员。classA{public:int*getFooPtr(){return&foo;//OK;Insidetheclassfooisvisible}private:intfoo;};intmain(){Aa;int*p_foo1=&a.foo;//Illegal;Outsidetheclass,foo

c++ - 为什么人们要编写返回非常量引用的私有(private)字段 getter?

我们都同意公共(public)变量不利于封装等等。但是,我注意到很多代码都在做这种事情:classfoo{private:intinteger_;stringsomeString_;//othervariablespublic:int&integer(){returninteger_;}string&someString(){returnsomeString_;}//other"functions"}intmain(){foof;f.integer()=10;f.someString()="something";return0;}我已经看到很多地方都在使用它,但我不明白为什么。基本上,

c++ - 为什么人们要编写返回非常量引用的私有(private)字段 getter?

我们都同意公共(public)变量不利于封装等等。但是,我注意到很多代码都在做这种事情:classfoo{private:intinteger_;stringsomeString_;//othervariablespublic:int&integer(){returninteger_;}string&someString(){returnsomeString_;}//other"functions"}intmain(){foof;f.integer()=10;f.someString()="something";return0;}我已经看到很多地方都在使用它,但我不明白为什么。基本上,

c++ - 具有模板类型的静态私有(private)函数作为 C++ 中的默认参数

我有以下一段C++17代码:templatestructA{A(Callbackc=&noop){}private:staticvoidnoop(){}};intmain(){Aa{};}Clang6编译这个没有任何错误,但是GCC8.2说:Infunction‘A(Callback)->A[withCallback=void(*)()]’:3:24:error:‘staticvoidA::noop()[withCallback=void(*)()]’isprivatewithinthiscontextA(Callbackc=&noop){}^~~~~5:14:note:declare

c++ - 具有模板类型的静态私有(private)函数作为 C++ 中的默认参数

我有以下一段C++17代码:templatestructA{A(Callbackc=&noop){}private:staticvoidnoop(){}};intmain(){Aa{};}Clang6编译这个没有任何错误,但是GCC8.2说:Infunction‘A(Callback)->A[withCallback=void(*)()]’:3:24:error:‘staticvoidA::noop()[withCallback=void(*)()]’isprivatewithinthiscontextA(Callbackc=&noop){}^~~~~5:14:note:declare

c++ - Diamond-inheritance 场景在 G++ 中编译良好,但在 VC++/Eclipse 中产生警告/错误

我有一个基类“Base”,它是一个纯虚类:classBase{public:virtualvoidA()=0;virtualvoidB()=0;virtual~Base(){}//Eclipsecomplainsthataclasswithvirtualmembersmusthavevirtualdestructor};我还有2个其他类,其中一个实现A(),另一个实现B():classDerivedA:publicvirtualBase{public:virtualvoidA(){printf("HellofromA");}};classDerivedB:publicvirtualBa

c++ - Diamond-inheritance 场景在 G++ 中编译良好,但在 VC++/Eclipse 中产生警告/错误

我有一个基类“Base”,它是一个纯虚类:classBase{public:virtualvoidA()=0;virtualvoidB()=0;virtual~Base(){}//Eclipsecomplainsthataclasswithvirtualmembersmusthavevirtualdestructor};我还有2个其他类,其中一个实现A(),另一个实现B():classDerivedA:publicvirtualBase{public:virtualvoidA(){printf("HellofromA");}};classDerivedB:publicvirtualBa

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继承,但在我的情况下它并没有什么意义。 最佳答案