草庐IT

private_struct

全部标签

c++ - 为什么 Qt 使用 d_func() 来实例化一个指向私有(private)数据的指针?

考虑以下Qt类:#includeclassMyClassPrivate;classMyClass{public:MyClass();~MyClass();private:QScopedPointerd_ptr;Q_DECLARE_PRIVATE(MyClass)}这个类类似于大多数实现私有(private)实现的Qt类的结构。宏Q_DECLARE_PRIVATE将导致以下扩展(从Qt5开始):inlineMyClassPrivate*d_func(){returnreinterpret_cast(qGetPtrHelper(d_ptr));}inlineconstMyClassPriv

c++ - 将 struct tm 转换为 time_t

我有以下代码:structtmtime;strptime("27052010","%d%m%Y",&time);cout输出是:sec:1474116832min:32767hour:4238231day:27month:5year:110sec:52min:0hour:6day:2month:9year:640time:18008625652(Fri,02Sep254004:00:52GMT)我的问题是为什么mktime()改变了time的值,为什么转换后的time_t不等于我输入的日期。我希望输出是自1970年以来以秒数表示的日期(27.05.2010=1330905600)。提前

c++ - 指针在 OpenMP 并行部分中是私有(private)的吗?

我已将OpenMP添加到现有代码库中,以便并行化for循环。在parallelfor区域的范围内创建了几个变量,包括一个指针:#pragmaompparallelforfor(inti=0;imyfunc();lm->anotherfunc();[....]}在生成的输出文件中,我注意到不一致,可能是由竞争条件引起的。我最终通过使用ompcritical解决了竞争条件。不过,我的问题仍然存在:lm是每个线程私有(private)的,还是共享的? 最佳答案 是的,在OpenMP区域内声明的所有变量都是私有(private)的。这包括指

c++ - 当复制构造函数是私有(private)的且未实现时是否允许 RVO?

假设我有一个类,其中复制构造函数是私有(private)的并且未实现(使对象不可复制)classNonCopyable{//whateverprivate:NonCopyable(constNonCopyable&);voidoperator=(constNonCopyable&);};现在在同一个类的一些成员函数中,我编写了返回该类对象的代码:NonCopyableNonCopyable::Something(){returnNonCopyable();}这是RVO可以启动的情况。RVO仍然要求复制构造函数是可访问的。由于对复制构造函数的可能调用是从同一个类成员函数中完成的,因此复制

c++ - 构造函数名称前的关键字 struct

当我看到这段代码用MSVisualC++编译成功时,我很惊讶。structfoo{structfoo(inti):value(i){}intvalue;};在如此奇怪的上下文中关键字struct是什么意思? 最佳答案 在大多数情况下,您可以使用精心设计的类型说明符structfoo,或等同于classfoo,而不仅仅是类名富。这对于解决歧义很有用:structfoo{};//Declaresatypefoofoo;//Declaresavariablewiththesamenamefoobar;//Error:"foo"refers

c++ - BOOST_FUSION_ADAPT_STRUCT 没有采用正确数量的参数

我正在使用Boost::Spirit将一些文本解析为结构。这需要使用BOOST_FUSION_ADAPT_STRUCT来解析文本并直接存储到结构中。我知道宏有两个参数:结构名称作为第一个参数,所有结构成员作为第二个参数。我只传递了那2个。但是我得到一个编译错误,error:macro"BOOST_FUSION_ADAPT_STRUCT_FILLER_0"passed3arguments,buttakesjust2这是代码片段。如果您需要完整代码,请告诉我。谢谢。namespaceclient{namespaceqi=boost::spirit::qi;namespaceascii=bo

c++ - 为什么模板化的派生类可以在 gcc 上访问其基私有(private)成员?

我正在学习C++。现在我明白派生类不能访问其基类的私有(private)成员,但为什么模板化的可以?例如这样的东西很好用:classbase{staticintx;};templateclassderived:publicbase{Tt;public:voidsetx(inti){x=i;}intgetx(){returnx;}};我在Linux上使用gcc5.4。 最佳答案 这是GCC的一个已知错误,它似乎无法在模板中正确执行访问检查。参见Bug58740.不幸的是,它仍然没有修复。顺便说一句:Clang未能按预期编译。

C++ 处理特定的 impl - #ifdef vs 私有(private)继承 vs 标签调度

我有一些类实现了一些我有的计算针对不同的SIMD实现进行优化,例如阿尔托和上海证券交易所。我不想用#ifdef...#endif污染代码块对于我必须优化的每种方法,所以我尝试了其他几种接近,但不幸的是,我对它的转变方式不太满意出于我会尽力澄清的原因。所以我正在寻找一些建议关于如何改进我已经完成的工作。1.粗略的不同实现文件包括我有相同的头文件,描述了不同的类接口(interface)纯C++、Altivec和SSE的“伪”实现文件仅用于相关方法://Algo.h#ifndefALGO_H_INCLUDED_#defineALGO_H_INCLUDED_classAlgo{public:

c++ - 为什么访问类的私有(private)变量与访问结构的变量一样高效?

我实现了一些主要数据结构是树的算法。我用一个类来表示一个节点,用一个类来表示一棵树。因为节点经常更新,所以我调用了很多setter和getter。因为我多次听说函数调用很昂贵,所以我在想,也许如果我用结构体来表示节点和树,它会使我的算法在实践中更有效率。在这样做之前,我决定进行一个小实验,看看是否确实如此。我创建了一个类,它有一个私有(private)变量、一个setter和一个getter。我还创建了一个也有一个变量的结构,没有setter/getter,因为我们可以通过调用struct.varName来更新变量。以下是结果:运行次数就是我们调用setter/getter的次数。下面

c++ - 为什么我不能分配具有已删除或私有(private)析构函数的类的数组?

这个问题在这里已经有了答案:Dynamicallocationofclassarraywithprotecteddestructor(3个答案)Whatdestructorsarerunwhentheconstructorthrowsanexception?(3个答案)关闭5年前。我最近在工作中遇到了这个问题。我正在使用的库使用引用计数对象并实现了自己的处理方式。部分实现是库的每个类都有一个私有(private)析构函数。我猜这是为了防止在堆栈上创建对象,因为库会自动管理对象的生命周期(它是一个场景图)。无论如何,我想在堆上分配一个这样的类的数组,遇到了以下问题:#includeusi