草庐IT

lldb_private

全部标签

c++ - 公共(public) "using"= decltype(<private>)

在以下(最小化)代码中,我有一个公共(public)using引用decltype(something_private)的声明:usingFoo=decltype(something_private).在Clang而不是GCC上,由于它是私有(private)的,因此无法编译。问题:如果我不想制作func(),有什么优雅的解决方案?上市。在C++标准(C++11)中,备份Clang在这里是正确的吗?以下代码在Clang(3.9-7.0)上失败并出现以下错误代码,但在GCC(4.8.4-8.2)上构建:classA{private:templatestaticautofunc()->T;

c++ - 委派到私有(private)领域

有时,C++的隐私概念让我感到困惑:-)classFoo{structBar;Bar*p;public:Bar*operator->()const{returnp;}};structFoo::Bar{voidbaz(){std::coutbaz();//fine}由于Foo::Bar是private,我不能在main中声明b。但是我可以从Foo::Bar调用方法就好了。为什么这是允许的?这是意外还是有意为之?哦,等等,它变得更好了:Foof;autox=f.operator->();//:-)x->baz();即使我不能命名类型Foo::Bar,它也可以与auto一起使用...诺亚写道

c++ - 委派到私有(private)领域

有时,C++的隐私概念让我感到困惑:-)classFoo{structBar;Bar*p;public:Bar*operator->()const{returnp;}};structFoo::Bar{voidbaz(){std::coutbaz();//fine}由于Foo::Bar是private,我不能在main中声明b。但是我可以从Foo::Bar调用方法就好了。为什么这是允许的?这是意外还是有意为之?哦,等等,它变得更好了:Foof;autox=f.operator->();//:-)x->baz();即使我不能命名类型Foo::Bar,它也可以与auto一起使用...诺亚写道

c++ - friend 类对象可以访问派生类对象上的基类私有(private)成员吗?

我很惊讶下面的代码可以编译。似乎与(公共(public)继承的)基类友好的类可以访问基类的成员,前提是派生类的实例。如果继承改为private则编译失败。简而言之,d.b_var在F::func(D&d)中如何有效?#include#includeusingnamespacestd;classB{intb_var;friendclassF;};classD:publicB{intd_var;};classF{public:voidfunc(D&d){d.b_var=5;}};intmain(){cout 最佳答案 classD的对象

c++ - friend 类对象可以访问派生类对象上的基类私有(private)成员吗?

我很惊讶下面的代码可以编译。似乎与(公共(public)继承的)基类友好的类可以访问基类的成员,前提是派生类的实例。如果继承改为private则编译失败。简而言之,d.b_var在F::func(D&d)中如何有效?#include#includeusingnamespacestd;classB{intb_var;friendclassF;};classD:publicB{intd_var;};classF{public:voidfunc(D&d){d.b_var=5;}};intmain(){cout 最佳答案 classD的对象

C++友元函数不能访问私有(private)成员

这应该是一个带有一堆运算符和函数的字符串类,包括两个友元函数。这两个给我带来了一些麻烦,因为编译器说他们不能访问私有(private)成员。这是我的string.h:#include#ifndefSTR_H#defineSTR_HnamespaceMyStr{classStr{private:unsignedintlength;char*data;public:Str();Str(constStr&);Str(constchar*);Str(charc,unsignedintdb);~Str();char*cStr()const;unsignedintgetLength()const;

C++友元函数不能访问私有(private)成员

这应该是一个带有一堆运算符和函数的字符串类,包括两个友元函数。这两个给我带来了一些麻烦,因为编译器说他们不能访问私有(private)成员。这是我的string.h:#include#ifndefSTR_H#defineSTR_HnamespaceMyStr{classStr{private:unsignedintlength;char*data;public:Str();Str(constStr&);Str(constchar*);Str(charc,unsignedintdb);~Str();char*cStr()const;unsignedintgetLength()const;

c++ - 为什么私有(private)成员变量上不允许使用 decltype?

假设我有这样的类(class):classFoo{std::vectorbar;public:std::vector&get_bar(){returnbar;}};然后,我想要另一个与bar具有相同类型的变量。如果我能做到这一点,那对我来说很有意义:decltype(Foo::bar)clone_of_bar;但这不起作用。编译器告诉我'std::vectorFoo::bar'是私有(private)的。所以我最终不得不使用这样的东西:std::remove_reference().get_bar())>::typeclone_of_bar;这可行,但看起来一团糟。也许有更简单的方法来

c++ - 为什么私有(private)成员变量上不允许使用 decltype?

假设我有这样的类(class):classFoo{std::vectorbar;public:std::vector&get_bar(){returnbar;}};然后,我想要另一个与bar具有相同类型的变量。如果我能做到这一点,那对我来说很有意义:decltype(Foo::bar)clone_of_bar;但这不起作用。编译器告诉我'std::vectorFoo::bar'是私有(private)的。所以我最终不得不使用这样的东西:std::remove_reference().get_bar())>::typeclone_of_bar;这可行,但看起来一团糟。也许有更简单的方法来

c++ - 为什么允许通过基类的指针调用派生类的私有(private)虚方法?

#includeusingnamespacestd;classA{public:virtualvoidf(){coutf();return0;}此代码正常工作并打印B::f()。我知道它是如何工作的,但为什么允许这段代码? 最佳答案 访问控制在编译时执行,而不是运行时。对f()的调用通常无法知道ptr指向的对象的运行时类型,因此不会检查派生类的访问说明符。这就是允许调用的原因。至于为什么允许使用私有(private)函数覆盖B类-我不确定。当然B违反了从A继承的接口(interface),但通常C++语言并不总是强制接口(inter