草庐IT

more-private

全部标签

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++ - 命名空间中的私有(private)类

我在头文件的命名空间中有一个类。该类需要一个模板类型,而我只希望使用某些类型。下面显示了一个示例。文件a.hpp//a.hppnamespacea_ns{templateclassa{//stuff};typedefaa_double;}//endofnamespace//stuff文件b.hpp//b.hpp#includenamespaceb_ns{typedefa_ns::a_doubleb;}文件main.cpp//main.cpp#include"b.hpp"intmain(){b_ns::bmy_b;//my_a_which_is_not_allowed;//因此,正如您从

删除说明符与私有(private)函数的 C++11 用法

我正在强化我的C++(例如,尝试进入更现代风格的编码)并且正在查看删除说明符。据我了解,它用于确保无法定义或调用某些功能。如果我理解正确的话,这主要是在赋值和复制的范围内。我不太确定使用delete说明符和仅将这些函数设为私有(private)之间有什么区别。例如,有什么区别:classFoo{private:Foo&operator(constFoo&);Foo(constFoo&);};和classBar{public:Bar&operator(constBar&)=delete;Bar(constBar&)=delete;};换句话说:使用delete说明符有什么好处?仅仅是为了

C++ 私有(private)继承和静态成员/类型

我试图阻止一个类将它的“this”指针转换成它的接口(interface)之一的指针。我通过中间代理类使用私有(private)继承来做到这一点。问题是我发现私有(private)继承使得层次结构中继承类下的所有类都无法访问基类的所有公共(public)静态成员和类型。classBase{public:enumEnum{value};};classMiddle:privateBase{};classChild:publicMiddle{public:voidMethod(){Base::Enume=Base::value;//doesn'tcompileBAD!Base*base=th

c# - 私有(private)在 C++ 和 C# 中意味着不同的东西吗?

我想知道为什么C#不允许privatevirtual函数并遇到恰当命名的WhyareprivatevirtualmethodsillegalinC#?在接受的答案中EricLippert(谁可能知道他在说什么……)说:Ifyoudesiretorestricttheabilitytooverridethemethodinnon-nestedderivedclassesthenyoucandosobyrestrictingtheabilityofnon-nestedclassestoderivefromthebaseclass;在C++中,private:virtual是有意义的,因为它

c++ - 允许构造函数调用私有(private)方法的默认参数

我有课classA{public:classKey{Key(){}Key(Keyconst&){}};A(Keykey,inta=5){}};Key的构造函数是私有(private)的,因此任何人都不能构造对象A。但是,使用以下代码:intmain(){Aa(A::Key());//thiscompiles!!!Aa2(A::Key(),5);//thisdoesn't//somehowdefaultingtheargumentcausestheprivateconstructor//tobeOK-noideawhyreturn0;}通过在我的构造函数中使用inta的默认参数,编译器愉

c++ - 单元测试资源管理类中的私有(private)方法 (C++)

我之前用另一个名字问过这个问题,但因为我没有很好地解释它而删除了它。假设我有一个管理文件的类。假设此类将文件视为具有特定文件格式,并包含对该文件执行操作的方法:classFoo{std::wstringfileName_;public:Foo(conststd::wstring&fileName):fileName_(fileName){//ConstructaFoohere.};intgetChecksum(){//Openthefileandreadsomepartofit//Longmethodtofigureoutwhatchecksumitis.//Returnthechec

c++ - STL 中的 VS 编译器错误 C2752 ("more than one partial specialization matches")

不知何故,我喜欢这些显示(基本?)问题的“最短”程序。在VS2008中测试一些模板代码时出现了这个错误(它也已在VS2010和VS2012中得到确认,见下文):c:\programfiles(x86)\microsoftvisualstudio9.0\vc\include\xmemory(225):errorC2752:'std::_Ptr_cat_helper':morethanonepartialspecializationmatchesthetemplateargumentlistwith[_T1=constfloat(**),_T2=constfloat(**)]我可以将问题归

c++ - 你为什么要将 operator `new` 设为私有(private)?

我正在使用OpenSpliceDDS,并且在那里,几乎所有C++类(我使用的基本类,如果重要的话我可以提及它们)都重载了new运算符以使其成为私有(private)的(以防止用户使用它们)。我不明白,为什么会有人这样做?有人可以提供一些例子来说明这样做的必要性吗?为什么我需要new:因为大多数这些类没有默认构造函数,我需要在稍后的实现中通过unique_ptr初始化它们。简单的技巧:另一方面......我可以很容易地欺骗这个!我可以用另一个类包装这个类,然后使用new所有我想要的,对吧?因此,我不明白动机,感觉风格很差。有人可以解释一下吗?编辑:澄清一下:提供一个无法转义的好例子是一个

c++ - 私有(private)方法作为尾随返回类型 (decltype)

当我尝试在私有(private)方法函数上使用decltype()时,我得到了私有(private)方法error:'m1'hasnotbeendeclaredinthisscope#includeclassC{public:C()=default;~C()=default;automasterMethod(intopMode)->decltype(m1()){switch(opMode){case1:returnm1();break;case2:returnm2();break;default:returnm1();break;}}private:intm1(){return1;}i