草庐IT

public_contact

全部标签

c++ - 有没有办法拥有一个公共(public)成员,从类外部不可修改,没有访问器包装函数?

据我所知,这似乎不可能以直接的方式进行。使成员const使它对每个人都是const。我想要一个只读属性,但想避免使用典型的“getter”。我想要constpublic,mutableprivate。这在C++中完全可行吗?目前我能想到的只是一些模板和friend的诡计。我现在正在调查这个。这似乎是一个愚蠢的问题,但我之前对这里的答案感到惊讶。 最佳答案 一个可能的解决方案可以基于一个内部类,外部类是它的友元,如下所示:structS{templateclassProp{friendstructS;Tt;voidoperator=(

c++ - C++ 头文件的 emacs 公共(public)/ protected /私有(private)标签缩进不适用于零偏移

即使我在我的.emacs文件中定义了一些东西,我也无法在emacs中为我的C++头文件获得零偏移量。下面的头文件显示了两个命名空间内的类定义,最重要的是我希望具有零偏移量的public关键字,如下所示。namespacen1{namespacen2//nooffset{classSomeClass//nooffsetfromnamespaceopencurly{public://thislinewithzerooffsetSomeClass();//offset4...};inlineSomeClass::SomeClass()//nooffset{}}//n2}//n2在我的.ema

c++如何为同一成员创建公共(public)和 protected 访问器

如果我有两种方法-一种是公共(public)的,一种是protected返回对同一成员的引用,我会得到以下编译错误:'Server::getManager':cannotaccessprotectedmemberdeclaredinclass'Server'当我注释掉protected函数时,代码可以正常工作。你能告诉我为什么会这样吗?为什么编译器找不到相同成员的公共(public)函数?classManager{};classServer{public:constManager&getManager()const{returnm_man;}protected:Manager&getM

c++ - 通过公共(public) const 指针进行封装是个好主意吗?

这是我所知道的:明智的做法是不要直接在您的API中公开您的ivar;相反,使用访问器指向非const对象的const指针仅意味着您可以更改对象,但不能重定向指针指向的位置这是我的情况:我有一些相关的类(class)。我想创建一个简单的类,通过组合,将这些组合成一个逻辑接口(interface)。我的每个封闭类在其API中已经具有公共(public)和私有(private)区别,因此我不介意将它们直接暴露给父类的用户。这意味着为这些ivar编写访问器对我来说太过分了,因为这些类已经管理了哪些是公共(public)的,哪些不是。但是,我不希望用户更改包含在这个组合父类中的实际对象。所以我能

c++ - 将私有(private)复制构造函数与公共(public)赋值运算符一起使用时出错

你们谁能解释一下为什么下面这段代码不能编译?#includeusingnamespacestd;classFoo{public:Foo(){cout我收到的错误:$g++-ocopy_ctor_assigncopy_ctor_assign.cc&&./copy_ctor_assigncopy_ctor_assign.cc:Infunction'intmain()':copy_ctor_assign.cc:10:error:'Foo::Foo(constFoo&)'isprivatecopy_ctor_assign.cc:17:error:withinthiscontext注意:当我删除

c++ - 基类中的公共(public) protected 数据成员?

我有一个基类和几个派生类。派生类使用一些公共(public)数据,我可以把这些公共(public)数据作为基类的保护成员吗?我知道protected成员有时会破坏封装,所以我想知道是否有什么好的方法。这是一个具体的例子:classBase{public:virtualvoidfoo()=0;voidprintData();protected:std::vectormData;}classDr1:publicBase{public:virtualvoidfoo();//couldchangemData}classDr2:publicBase{public:virtualvoidfoo()

c++ - 为什么 C++ 编译器不区分同名的继承公共(public)方法和继承私有(private)方法?

我很困惑为什么C++编译器不接受这个:classFoo{private:voidBaz(){}};classBar{public:voidBaz(){};classFooBar:publicFoo,publicBar{};voidmain(){FooBarfb;fb.Baz();}gcc给出的错误是:requestformember‘Baz’isambiguouscandidatesare:voidBar::Baz()voidFoo::Baz()但是我想要Bar::Baz()不是很明显吗,因为Foo::Baz()是私有(private)的?为什么编译器不会在这里消除歧义?

c++ - 复制构造函数应该是私有(private)的还是公共(public)的

我正在编写一个抽象类,它将成为其他几个类的父类。我认为应该将复制构造函数设为私有(private),因为您使用的是抽象类,没有什么可复制的。但是,我不是100%肯定。我说的对吗?如果不对,为什么要公开或保护它? 最佳答案 如果您不想复制类的对象,则复制构造函数应该是私有(private)的。否则,它应该是公开的。 关于c++-复制构造函数应该是私有(private)的还是公共(public)的,我们在StackOverflow上找到一个类似的问题: https

c++ - "a struct has public inheritance by default"

“默认情况下结构具有公共(public)继承”这句话的真正含义是什么?为什么下面的代码错误只是因为我在从c派生类d时省略了关键字'public'??structc{protected:inti;public:c(intii=0):i(ii){}virtualc*fun();};c*c::fun(){coutfun();} 最佳答案 意思是structc;structd:c相当于structd:publicc您的代码是一个类,扩展了一个结构:structc;classd:c;相当于classd:privatec;因为class默认有私

ios - Contact Framework 仅抓取少量联系人

我正在使用联系人框架将所有联系人从我的iPhone抓取到我的应用程序中。但它只获取了很少的联系人。这是我使用此代码的代码://ios9+CNContactStore*store=[[CNContactStorealloc]init];[storerequestAccessForEntityType:CNEntityTypeContactscompletionHandler:^(BOOLgranted,NSError*_Nullableerror){if(granted==YES){NSArray*keys=@[CNContactGivenNameKey,CNContactFamilyN