是否可以声明指向类的私有(private)数据成员的指针?如果是这样,你是怎么做的? 最佳答案 是的,与创建任何其他指针的方式相同。当然,要注意的是,由于成员是私有(private)的,因此您只能在类内部创建指针,您可以在其中看到该成员。classA{public:int*getFooPtr(){return&foo;//OK;Insidetheclassfooisvisible}private:intfoo;};intmain(){Aa;int*p_foo1=&a.foo;//Illegal;Outsidetheclass,foo
是否可以声明指向类的私有(private)数据成员的指针?如果是这样,你是怎么做的? 最佳答案 是的,与创建任何其他指针的方式相同。当然,要注意的是,由于成员是私有(private)的,因此您只能在类内部创建指针,您可以在其中看到该成员。classA{public:int*getFooPtr(){return&foo;//OK;Insidetheclassfooisvisible}private:intfoo;};intmain(){Aa;int*p_foo1=&a.foo;//Illegal;Outsidetheclass,foo
我们都同意公共(public)变量不利于封装等等。但是,我注意到很多代码都在做这种事情:classfoo{private:intinteger_;stringsomeString_;//othervariablespublic:int&integer(){returninteger_;}string&someString(){returnsomeString_;}//other"functions"}intmain(){foof;f.integer()=10;f.someString()="something";return0;}我已经看到很多地方都在使用它,但我不明白为什么。基本上,
我们都同意公共(public)变量不利于封装等等。但是,我注意到很多代码都在做这种事情:classfoo{private:intinteger_;stringsomeString_;//othervariablespublic:int&integer(){returninteger_;}string&someString(){returnsomeString_;}//other"functions"}intmain(){foof;f.integer()=10;f.someString()="something";return0;}我已经看到很多地方都在使用它,但我不明白为什么。基本上,
我有以下一段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++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
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继承,但在我的情况下它并没有什么意义。 最佳答案
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继承,但在我的情况下它并没有什么意义。 最佳答案
我使用boost::python来包装一个C++类。此类不允许复制构造函数,但python模块总是想创建一个。C++类看起来像这样(简化)classFoo{public:Foo(constchar*name);//constructorprivate:ByteArraym_bytearray;};ByteArray类继承自boost::noncopyable,因此Foo没有复制构造函数。这是Python模块stub:BOOST_PYTHON_MODULE(Foo){class_("Foo",init());}在编译boost::python模块时,我收到错误,因为ByteArray继承
我使用boost::python来包装一个C++类。此类不允许复制构造函数,但python模块总是想创建一个。C++类看起来像这样(简化)classFoo{public:Foo(constchar*name);//constructorprivate:ByteArraym_bytearray;};ByteArray类继承自boost::noncopyable,因此Foo没有复制构造函数。这是Python模块stub:BOOST_PYTHON_MODULE(Foo){class_("Foo",init());}在编译boost::python模块时,我收到错误,因为ByteArray继承