草庐IT

private_struct

全部标签

c++ - 错误 : expected unqualified-id before ‘.’ token//(struct)

我需要制作一个程序,从用户那里获取分数,然后对其进行简化。我知道该怎么做并且已经完成了大部分代码,但我一直收到此错误“错误:‘.’标记前应为不合格ID”。我已经声明了一个名为ReducedForm的结构,它包含简化的分子和分母,现在我要做的是将简化的值发送到这个结构。这是我的代码;在Rational.h中;#ifndefRATIONAL_H#defineRATIONAL_Husingnamespacestd;structReducedForm{intiSimplifiedNumerator;intiSimplifiedDenominator;};//Ihaveaclassherefor

c++ - 当构造函数是私有(private)的时使用公共(public)析构函数

我见过这样的代码,其中构造函数被声明为私有(private)的,而析构函数是公共(public)的。这样的声明有什么用?析构函数是否需要公开以便在继承期间可以进行调用,还是代码中的错误?这个问题的信息似乎有点少,但我真正想知道的是,当构造函数需要私有(private)时,是否有公共(public)析构函数遵守C++规则? 最佳答案 简答将构造函数创建为私有(private)但将析构函数创建为公共(public)有很多实际用途。您可以使用此范例来:强制引用计数(SeeHiteshVaghani'sexample).实现singleto

c++ - 我无法理解这一行 - 取消引用私有(private)成员变量的地址或什么?

我刚才问了一个问题aboutaccessingtheunderlyingcontainerofSTLadapters.我得到了一个非常有帮助的答案:templateS&Container(priority_queue&q){structHackedQueue:privatepriority_queue{staticS&Container(priority_queue&q){returnq.*&HackedQueue::c;}};returnHackedQueue::Container(q);}intmain(){priority_queuepq;vector&tasks=Contain

c++ - 在 C++ 中使用 C 风格的 struct/typedef

我有一个混合使用C和C++的项目。在C头文件中,我有这样的代码:typedefstructmystruct*mystruct;structmystruct{//whateverstructneeds};为了在C++文件中使用它,我正在做:extern"C"{#include"mystruct.h"}所以你看到我正在创建一个使用相同名称的不透明指针。这在C中很好,但在C++中不行(因为要求在C中使用struct关键字实例化,但在C++中不行)。但是,在尝试编译C++代码时出现错误(声明冲突)。我认为使用extern"C"会使编译器将Cheader视为C,但它似乎仍将其用作C++。对这里发

c++ - 如何从 shared_ptr 调用私有(private)析构函数?

我有一个resource_manager维护std::vector>的类在内部。resource_manager是resource的好友类.我要resources只能由resource_manager创建/删除,所以我将其构造函数设为私有(private)(可以正常工作)。但是,如果我将析构函数设为私有(private),则代码不会编译,因为析构函数由boost::shared_ptr调用,这不是resource的friend.我正在考虑通过只返回constresource*来强制执行“不要被客户删除”规则来自resource_manager,但不知何故我对这种方法提供的安全性不满意(

c++ - 为什么C++中同时存在struct和class?

正如我们所知,struct和class在该语言的许多地方是可以互换的。令人困惑的是,关键字本身不一定对应于标准中使用的语言。例如,在标准草案N4567[class]/10中,APODstruct109isanon-unionclassthatisbothatrivialclassandastandard-layoutclass,andhasnonon-staticdatamembersoftypenon-PODstruct,non-PODunion(orarrayofsuchtypes).Similarly,aPODunionisaunionthatisbothatrivialclas

c++ - 将私有(private)部分保留在 c++ header 之外 : pure virtual base class vs pimpl

我最近从Java和Ruby切换回C++,令我惊讶的是,当我更改私有(private)方法的方法签名时,我不得不重新编译使用公共(public)接口(interface)的文件,因为私有(private)部分也在.h中文件。我很快想出了一个解决方案,我想这对Java程序员来说是典型的:接口(interface)(=纯虚拟基类)。例如:香蕉树.h:classBanana;classBananaTree{public:virtualBanana*getBanana(std::stringconst&name)=0;staticBananaTree*create(std::stringcons

c++ - 提神气 : Take a rule's attribute and set it as a field of an enclosing rule's struct attribute?

像许多其他问题一样,我正在尝试使用Boost.Spirit.Qi将简单语法解析为结构树。我会尽量提炼我正在尝试做的事情,以尽可能最简单的情况。我有:structInteger{intvalue;};BOOST_FUSION_ADAPT_STRUCT(Integer,(int,value))稍后,在语法结构中,我有以下成员变量:qi::ruleinteger;我用它来定义integer=qi::int_;但是,当我尝试实际解析一个整数时,使用qi::phrase_parse(iter,end,g,space,myInteger);myInteger.value在成功解析后始终未初始化。同

c++ - 如何为 STL 类容器提供公共(public) const 迭代器和私有(private)非 const 迭代器?

我有一个包含std::list的类,我希望为const_iterator提供publicbegin()和end(),为普通迭代器提供privatebegin()和end()。但是,编译器看到私有(private)版本并提示它是私有(private)的,而不是使用公共(public)const版本。我知道C++不会重载返回类型(在本例中为const_iterator和迭代器),因此它选择了非常量版本,因为我的对象不是const。如果没有在调用begin()之前将我的对象转换为const或者没有重载名称begin是否有办法实现这一点?我认为这是一个已知的模式,人们以前已经解决过,并且想效仿

c++ - 需要在 Singleton 类中私有(private)化赋值运算符

有人可以证明在Singleton类实现中私有(private)化赋值运算符的必要性吗?将Singleton&operator=(Singletonconst&);私有(private)化解决了什么问题?classSingleton{public:staticSingleton&Instance(){staticSingletontheSingleton;returntheSingleton;}private:Singleton();//ctorhiddenSingleton(Singletonconst&);//copyctorhiddenSingleton&operator=(Sin