草庐IT

package-private

全部标签

c++ - 成为私有(private)成员(C++ 类)意味着什么?

我对C++类中的私有(private)数据成员有点困惑。我是编码新手,仍处于“类(class)”一章的中间,所以我可能会超前,但我觉得我缺少一条信息:假设我有这段代码:classclocktype;{public:voidsetTime(int,int,int);...private:inthr;intmin;intsec;};然后我创建了一个对象myclock。clocktypemyclock;myclock::setTime(hour,minute,min){if(0我的教科书说我不能这样做:myclock.hr=5;因为hr是私有(private)数据成员,对象myclock只能

c++ - 在 C++ 中,我可以在其范围之外定义一个指向私有(private)类成员的指针吗?

考虑:classC{private:classT{inta,b;};};C::T*p;正如预期的那样,这会产生一个编译错误,指出C::T在第6行的上下文中是私有(private)的。现在将其更改为指向成员的指针:classC{private:classT{inta,b;};};intC::T::*p;这一次,gcc3.2.3版仍然发出同样的提示,但gcc3.4.3版让它通过了。根据标准,哪种行为是正确的? 最佳答案 由于T除了类C本身之外的任何地方都是不可见的,我无法想象它会被允许。在Comau上试过这个,他告诉我同样的事情。可悲的

c++ - 如何创建一个队列,其中包含 boost::packaged_task<> 以及返回任意类型的函数?

我正在尝试构建一个需要由一个线程执行并且可以由多个线程提供的函数的工作队列。为此,我计划使用boost::packaged_task和boost::unique_future。这个想法是你会做的:Foo值=queue.add(myFunc).get();这会阻塞,直到函数被执行。所以queue.add(...)接受一个boost::function,并返回一个boost::unique_future。然后在内部它使用boost::function为其构造函数创建一个boost::packaged_task。我遇到的问题是boost::function每次都不一样。具体来说,它的返回值会

c++ - 从抽象(纯虚拟)类私有(private)继承是否有意义?

假设这个结构structInterfaceForFoo{virtualvoidGetItDone()=0;};classAPoliticallyCorrectImplementationOfFooRelatedThings:privateInterfaceForFoo{public:voidGetItDone(){/*dothethingalready*/};};现在,我想知道以这种方式从接口(interface)私有(private)继承是否有任何有用的场景。 最佳答案 哈,这里的每个人都说“不”。我说“是的,它确实有意义。”cl

c++ - 具有混合继承修饰符的菱形继承(钻石问题)( protected /私有(private)/公共(public))

假设我们有类A、B、C、D,其中A是基础,B、C是介于两者之间,D是在菱形模型中派生的。注意:classB在private模式下继承virtualyclassA,C类在保护模式下继承虚拟A类。classA{public:intmember;//notethismember};classB:virtualprivateA//noteprivate{};classC:virtualprotectedA//noteprotected{};classD:publicB,//doesn'tmetterpublicorwhateverherepublicC{};intmain(){Dtest;te

c++ - OpenMP 是否复制私有(private)对象?

我正在编写一个读取大文件(3x280GB)并对文件中的数据执行拟合程序的程序。并行化这样的程序非常方便,使用OpenMP可以轻松完成。我不明白的是如何在OpenMP中获取私有(private)变量。众所周知,fstream的对象是不可复制的,而且从直觉上讲,这使我无法将其用作私有(private)对象。所以文件的阅读者被共享了。后来我遇到了一些问题,我想尝试将fstreams设为私有(private),......你猜怎么着?有效!!!这怎么可能?!如果对象是不可复制的,OpenMP如何为每个内核使用同一对象的不同拷贝?我的程序是这样的:fstreamdataReaderX(Dirs[

c++ - 构造函数如何在私有(private)继承中工作

我知道关于这个话题也有同样的问题。但我仍然很困惑。请解释A的类构造函数如何使用obj执行,即使我私下继承了A的类构造函数。#includeusingnamespacestd;classA{public:A(){cout输出AB 最佳答案 私有(private)继承意味着所有公共(public)和protected基成员在派生类中变为私有(private)。所以A::A()在B中是私有(private)的,因此完全可以从B::B()访问。B::B()不能使用的是A的private构造函数(但你没有这些):structA{public:

c++ - 为什么在初始化私有(private)静态成员时允许调用私有(private)静态方法?

此代码按我想要的方式编译和工作,但为什么呢?#includeclassTest{private:staticbool_inited;staticbool_init(){std::cout如果我做了一个我认为不相关的改变:bool_inited=Test::_init();它不再编译,给我关于尝试调用私有(private)方法的预期错误。 最佳答案 ThiscodecompilesandworksthewayIwantit,butwhy?因为在使用它的地方,您是在类范围内操作,作为类的一部分。如果你写的话也是一样的:staticvoi

c++ - 如何使用配置模式进行 find_package 搜索并在模块模式下进行回退?

当一个库使用CMake定义了一个构建并经历了为自己构建安装包的麻烦时,就会有一个XXXConfig.cmake。如果库无法将其目标导出到CMake,CMake会尝试通过提供试图找到此类库的FindXXX.cmake脚本来弥合差距。在文档中,首先尝试使用FindXXX.cmake(模块模式),只有在失败时才会尝试使用XXXConfig.cmake(配置模式).但这对我来说似乎真的很倒退。问题是,例如,我从源代码构建了CURL,ConfigXXX生成了与FindXXX不同的目标名称,因此,当尝试使用它时,它失败了,因为FindXXX负责find_package请求并加载了不同的目标名称超出

java - 公共(public)方法中的私有(private)参数

当非私有(private)方法的参数是私有(private)类型(例如,私有(private)嵌套类)时,g++和javac都不会发出警告。此类方法不能由客户端使用,但它们可以作为类的公共(public)API的一部分出现。在C++中,将此类方法放入类Foo的公共(public)部分,例如,可以允许其他类访问这些方法,而无需明确列为类Foo中的友元(只要它们可以访问用作参数)。但总的来说,不显式地将此类方法设为私有(private)是否是不好的风格,还是可以将其忽略?(反正客户端用不了,有什么大不了的) 最佳答案 这是允许的,也可能