草庐IT

lldb_private

全部标签

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

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

C++ 私有(private)结构

我读过,类和结构(除了函数)之间的主要区别是类成员默认为私有(private),而结构成员默认为公共(public)。这意味着结构成员可以是私有(private)的。我的问题是:您可以拥有私有(private)结构成员吗?如果可以,使用私有(private)成员(member)的目的是什么?您将如何访问它们? 最佳答案 是的,结构可以有私有(private)成员,您只需要使用访问说明符即可。structMystruct{private:m_data;};结构和类之间的唯一区别是:访问说明符默认为类的私有(private)和结构的公共

C++ 私有(private)结构

我读过,类和结构(除了函数)之间的主要区别是类成员默认为私有(private),而结构成员默认为公共(public)。这意味着结构成员可以是私有(private)的。我的问题是:您可以拥有私有(private)结构成员吗?如果可以,使用私有(private)成员(member)的目的是什么?您将如何访问它们? 最佳答案 是的,结构可以有私有(private)成员,您只需要使用访问说明符即可。structMystruct{private:m_data;};结构和类之间的唯一区别是:访问说明符默认为类的私有(private)和结构的公共

c++ - "public"和 "private"可见性修饰符的缩进

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前.我通常像这样缩进public:和private:访问说明符:classFoo(){private:voidBar1(){}public:voidBar2(){}}但是,Xcode似乎不喜欢这样,所以我觉得我做错了什么。缩进private:和public:的常见做法是什么? 最佳答案 “宗教”问题:

c++ - "public"和 "private"可见性修饰符的缩进

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前.我通常像这样缩进public:和private:访问说明符:classFoo(){private:voidBar1(){}public:voidBar2(){}}但是,Xcode似乎不喜欢这样,所以我觉得我做错了什么。缩进private:和public:的常见做法是什么? 最佳答案 “宗教”问题:

c++ - 模板替换和 SFINAE 中的私有(private)成员访问

classA{inta;};templateclasstest{};templateclasstest{};intmain(){testa;}上面的代码在clangversion3.8.0-2ubuntu4(tags/RELEASE_380/final)上编译没有错误,但无法在g++-5(Ubuntu5.4.1-2ubuntu1~16.04)5.4.120160904上编译和g++-6(Ubuntu6.2.0-3ubuntu11~16.04)6.2.020160901有这样的错误:main.cpp:Infunction‘intmain()’:main.cpp:9:22:error:‘i

c++ - 模板替换和 SFINAE 中的私有(private)成员访问

classA{inta;};templateclasstest{};templateclasstest{};intmain(){testa;}上面的代码在clangversion3.8.0-2ubuntu4(tags/RELEASE_380/final)上编译没有错误,但无法在g++-5(Ubuntu5.4.1-2ubuntu1~16.04)5.4.120160904上编译和g++-6(Ubuntu6.2.0-3ubuntu11~16.04)6.2.020160901有这样的错误:main.cpp:Infunction‘intmain()’:main.cpp:9:22:error:‘i

c++ - 如何禁止公共(public)继承但允许私有(private)(和 protected )继承

C++11引入了关键字final来禁止future的覆盖或禁止继承。可以使用它的最常见示例是用于不打算用作基类的类(例如具有非虚拟析构函数)的情况。但是,有时我们可能希望在两个类之间建立is-implemented-in-terms-of关系(即private继承),而不是is-关系(public继承)。但是,final禁止这两种类型的继承。我的问题如下:有没有办法允许private继承但禁止public继承(可能不是直接的,但至少我们可以“模拟”它)?在这种情况下,即使我们使用具有非虚拟析构函数的类也不会有任何问题,因为我们不能通过指向基的指针直接使用派生类,所以我们应该没问题。我正

c++ - 如何禁止公共(public)继承但允许私有(private)(和 protected )继承

C++11引入了关键字final来禁止future的覆盖或禁止继承。可以使用它的最常见示例是用于不打算用作基类的类(例如具有非虚拟析构函数)的情况。但是,有时我们可能希望在两个类之间建立is-implemented-in-terms-of关系(即private继承),而不是is-关系(public继承)。但是,final禁止这两种类型的继承。我的问题如下:有没有办法允许private继承但禁止public继承(可能不是直接的,但至少我们可以“模拟”它)?在这种情况下,即使我们使用具有非虚拟析构函数的类也不会有任何问题,因为我们不能通过指向基的指针直接使用派生类,所以我们应该没问题。我正

C++:覆盖公共(public)\私有(private)继承

如果B使用public从A继承,可以B覆盖其中一个函数并强制它私密吗?classA{public:virtualdoublemy_func1(inti);virtualdoublemy_func2(inti);}classB:publicA//Noticethepublicinheritance{public:virtualdoublemy_func1(inti);private:virtualdoublemy_func2(inti);}反过来呢?如果继承类型是私有(private)的-B可以强制一个特定的函数是公共(public)的吗?如果A是纯抽象的怎么办?有区别吗?protect