草庐IT

lldb_private

全部标签

c++ - 在类外调用的私有(private)函数成员

在下面的例子中,为什么B::f()被调用,即使它是私有(private)的?我知道这个事实:在调用点使用用于表示调用成员函数的对象的表达式类型检查访问。#includeclassA{public:virtualvoidf(){std::cout 最佳答案 因为标准是这样说的:[C++11:11.5/1]:Theaccessrules(Clause11)foravirtualfunctionaredeterminedbyitsdeclarationandarenotaffectedbytherulesforafunctionthatl

c++ - 在 B 类中声明为友元的 A 类成员模板函数无法访问 A 类的私有(private)成员(仅限 Clang)

请查看此代码段。我知道这没有多大意义,只是为了说明我遇到的问题:#includeusingnamespacestd;structtBar{templatevoidPrintDataAndAddress(constT&thing){cout(thing);}private://friendstructtFoo;//fixesthecompilationerrortemplatevoidPrintAddress(constT&thing){cout(consttFoo&);private:intmData=42;};structtWidget{intmData=666;};intmain(

c++ - 在 B 类中声明为友元的 A 类成员模板函数无法访问 A 类的私有(private)成员(仅限 Clang)

请查看此代码段。我知道这没有多大意义,只是为了说明我遇到的问题:#includeusingnamespacestd;structtBar{templatevoidPrintDataAndAddress(constT&thing){cout(thing);}private://friendstructtFoo;//fixesthecompilationerrortemplatevoidPrintAddress(constT&thing){cout(consttFoo&);private:intmData=42;};structtWidget{intmData=666;};intmain(

c++ - 私有(private)嵌套类 c++ 的实例

这个问题在这里已经有了答案:WhycanIuseautoonaprivatetype?(5个回答)关闭7年前。我有以下代码classA{private:classB{public:voidf(){printf("Test");}};public:Bg(){returnB();}};intmain(){Aa;A::Bb;//CompilationerrorC2248A::Bb1=a.g();//CompilationerrorC2248autob2=a.g();//OKa.g();//OKb2.f();//OK.Outputis"Test"}如您所见,我有A类和私有(private)嵌套

c++ - 私有(private)嵌套类 c++ 的实例

这个问题在这里已经有了答案:WhycanIuseautoonaprivatetype?(5个回答)关闭7年前。我有以下代码classA{private:classB{public:voidf(){printf("Test");}};public:Bg(){returnB();}};intmain(){Aa;A::Bb;//CompilationerrorC2248A::Bb1=a.g();//CompilationerrorC2248autob2=a.g();//OKa.g();//OKb2.f();//OK.Outputis"Test"}如您所见,我有A类和私有(private)嵌套

c++ - 访问私有(private)嵌套类

我做了这个简单的类(class),但我仍然在玩:classA{private:classB{};public:BgetB(){returnB();};};从C++03开始​​,这个类编译得很好,但是没有漂亮的方法将getB()的结果分配给一个左值,在感觉:A::Bb=A().getB();不编译。我通过使用中间模板得到它,以这种方式:templatestructHideType{typedefTtype;};HideType::typeb=A().getB();但这看起来很糟糕,对于获取A::B左值变量的简单任务。从C++11开始,这不再是真的,或者至少在gcc中不是这样。此代码仍然无

c++ - 访问私有(private)嵌套类

我做了这个简单的类(class),但我仍然在玩:classA{private:classB{};public:BgetB(){returnB();};};从C++03开始​​,这个类编译得很好,但是没有漂亮的方法将getB()的结果分配给一个左值,在感觉:A::Bb=A().getB();不编译。我通过使用中间模板得到它,以这种方式:templatestructHideType{typedefTtype;};HideType::typeb=A().getB();但这看起来很糟糕,对于获取A::B左值变量的简单任务。从C++11开始,这不再是真的,或者至少在gcc中不是这样。此代码仍然无

c++ - 我们可以从函数中按值返回具有已删除/私有(private)复制/移动构造函数的对象吗?

在C++03中,不可能按值返回具有私有(private)未定义复制构造函数的类的对象:structA{A(intx){...}private:A(Aconst&);};Af(){returnA(10);//error!return10;//errortoo!}我想知道,在C++11中是否取消了这个限制,从而可以为没有用于复制或移动的构造函数的类编写具有类类型返回类型的函数?我记得允许函数的调用者使用新返回的对象可能很有用,但他们无法复制该值并将其存储在某处。 最佳答案 这是它的工作原理Af(){return{10};}即使A没有工作

c++ - 我们可以从函数中按值返回具有已删除/私有(private)复制/移动构造函数的对象吗?

在C++03中,不可能按值返回具有私有(private)未定义复制构造函数的类的对象:structA{A(intx){...}private:A(Aconst&);};Af(){returnA(10);//error!return10;//errortoo!}我想知道,在C++11中是否取消了这个限制,从而可以为没有用于复制或移动的构造函数的类编写具有类类型返回类型的函数?我记得允许函数的调用者使用新返回的对象可能很有用,但他们无法复制该值并将其存储在某处。 最佳答案 这是它的工作原理Af(){return{10};}即使A没有工作

c++ - "cannot access private member' "只有当类有导出链接时才会出错

我最近不得不更改几个类的链接规范并遇到了问题。其中两个类包含一个std::map和一个std::unique_ptr作为值类型。更改链接后,编译器开始提示“无法访问在类'std::unique_ptr'中声明的私有(private)成员”错误。有谁知道为什么只有在提供导出规范或有解决方案时才会发生这种情况?示例代码:#includestructSomeInterface{virtual~SomeInterface()=0;};//ThisclasscompileswithnoproblemsstructLocalClass{std::map>mData;};//Thisclassfai