草庐IT

more-private

全部标签

c++ - 我应该从私有(private)派生类指针转换到它的基类吗?

我从C++FAQ中找到的Generally,No.Fromamemberfunctionorfriendofaprivatelyderivedclass,therelationshiptothebaseclassisknown,andtheupwardconversionfromPrivatelyDer*toBase*(orPrivatelyDer&toBase&)issafe;nocastisneededorrecommended.HoweverusersofPrivatelyDershouldavoidthisunsafeconversion,sinceitisbasedonapr

c++ - C++ 中的私有(private)虚函数是否有通用的命名约定?

C++中的私有(private)虚函数是否有通用的命名约定?我见过do_something(...)、something_vfunc(...)等约定。C++项目中通常使用哪种约定? 最佳答案 标准中使用的约定(例如在许多std::numpunct中)是do_something是一个protectedvirtual方法,并且something是调用它的public非virtual方法。 关于c++-C++中的私有(private)虚函数是否有通用的命名约定?,我们在StackOverflo

C++ 错误 : was not declared in this scope with private after public

试图修改来自thispage的代码.问题代码如下:#include#includetemplateclassconst_reverse_wrapper{public:const_reverse_wrapper(constT&cont):container_(cont){}decltype(container_.rbegin())begin()const{returncontainer_.rbegin();}decltype(container_.rend())end(){returncontainer_.rend();}private:constT&container_;};templ

c++ - C++11 和 gcc 中的私有(private)和默认构造函数

代码:structA{private:A()=default;//Version1.};structB:publicA{};structC{private:C(){};//Version2.};structD:publicC{};intmain(){Bb;//Compilesunderg++4.7.2Dd;//Compilationerrorunderg++4.7.2}还有两种情况(使用gcc4.7.2):如果我编译此代码(使用A的构造函数的版本1),则没有问题。如果我使用第二个构造函数,gcc会告诉我D::D()是私有(private)的。问题:如果我使用默认构造函数,为什么问题会消

c++ - public const 不会覆盖 private const 函数吗?

我有一个类的标题是这样的:public:constdtMeshTile*getTile(inti)const;private:dtMeshTile*getTile(inti);当我尝试这样使用它时:constdtMeshTile*consttile=navmesh->getTile(i);我收到“‘dtMeshTile*getTile(int)’在此上下文中是私有(private)的”如何指定公共(public)函数? 最佳答案 考虑:#includeclassBar{};classFoo{public:Foo(Bar&bar):m

c++ - 当变量恰好是指针时,如何在非成员函数中使用私有(private)成员变量?

本质上,我的问题是我正在使用的库中的一个函数(此代码中的函数Foo)需要一个指向对象(Object*mbar)的指针作为参数。但是,mbar是bar的私有(private)成员变量。通常,我只使用getter并按值传递,但如果我传递指针,这将提供对资源的直接访问,这会破坏封装。任何代码都可以调用getter并自由修改它。接下来我想到的是我可以使用const指针,因为它们不允许修改它们指向的资源,但据我所知,我需要修改Foo才能接受它,这是不可能的,因为它是库函数。我能想到的最后一件事就是简单地使用Bar的友元来调用FoobarFunction,但我一直被告知友元函数是最后的手段。有没有

c++ - 私有(private)类的 friend

如何为私有(private)类(class)定义friend?#includeclassBase_t{private:structPriv_t{friendstd::ostream&operator错误::!maket17|&tee/tmp/vB5G5ID/54g++t17.cpp-ot17t17.cpp:Infunction'std::ostream&operator当我直接在Priv_t中定义friend时它有效friendstd::ostream&operator如何在类/结构定义之外做到这一点? 最佳答案 虽然Priv_t是

c++ - shared_from_this 和私有(private)继承

cppreference有这个如何使用std::enable_shared_from_this的例子(略微调整)classGood:std::enable_shared_from_this{public:std::shared_ptrgetptr(){returnshared_from_this();}};...autogood=std::make_shared();good->getptr();但是,这在VisualStudio2015(企业版,版本14.0.25123.00更新2)中不起作用,即std::bad_weak_ptr抛出异常。查看其他示例(包括来自cppreferenc

c++ - 不应该禁止访问私有(private)类型吗?

考虑这段代码:classA{structB{};std::vector_vec;public:conststd::vector&get()const{return_vec;}};请注意,B在类A中是私有(private)的。上面的代码可以编译,但是当从A类外部调用get()时,它不会:conststd::vector&vec=get();//doesnotcompile确实,A::B是私有(private)的。但是,从C++11开始,您可以简单地这样做:constauto&vec=get();完美运行。出于与上述相同的原因,您不能执行以下操作:A::Bobj;但是,由于有一个publi

c++ - 我可以使用私有(private)嵌套结构编写仿函数吗?

给定这个类:classC{private:structFoo{intkey1,key2,value;};std::vectorfooList;};这里的想法是fooList可以被Foo结构的key1或key2索引。我正在尝试编写仿函数以传递给std::find_if,这样我就可以通过每个键在fooList中查找项目。但是我无法让它们编译,因为Foo在类中是私有(private)的(它不是C接口(interface)的一部分)。有没有办法在不将Foo暴露给世界其他地方的情况下做到这一点?这是一个无法编译的代码示例,因为Foo在我的类中是私有(private)的:structMatchKe