草庐IT

static成员

全部标签

c++ - 通过调用 constexpr 函数定义静态 constexpr 成员

我的问题如下。我想根据constexpr值列表对类型列表进行排序。问题可以归结为这个函数:templateautomin(U,V)->std::conditional_t{return{};}而value必须分别是每种类型的一些静态constexpr成员。以下片段演示了用法://(I)//Thismustevenbedeclaredoutsideofafunctionbodyduetothestatics:(structX{staticconstexprdoublevalue=2.;};structY{staticconstexprdoublevalue=1.;};intmain(){

c++ - 来自类成员访问表达式的 xvalue?

所以我读了这个answer因为我对何时将值视为xvalue感到困惑,例如当值即将到期/接近其生命周期结束时。可悲的是,我仍然很困惑。无论如何,引文包括:aclassmemberaccessexpressiondesignatinganon-staticdatamemberofnon-referencetypeinwhichtheobjectexpressionisanxvalue,ora.*pointer-to-memberexpressioninwhichthefirstoperandisanxvalueandthesecondoperandisapointertodatamembe

c++ - 由于类型不完整,在 static_assert 中使用 std::is_base_of 失败

我想做的是让一些类继承自extention类。问题是extention类必须知道它正在扩展哪个类。这可以像这样简单地实现:templateclassExtention{public:voidcheck()const{std::cout::value{};classBar:publicExtention{};Foo和Bar类显示了扩展的好坏用法。Foo().check();→Extentionisvalid:trueBar().check();→Extentionisvalid:false我想在编译时检查模板的有效性,这让我写了templateclassExtention{static_

c++ - 私有(private)继承,返回对基类静态成员的引用

我有一个简单的问题,关于从一个私有(private)继承基类的类继承,即我们有classBase{};classHeir:privateBase{};classHeirsHeir:publicHeir{};了解HeirsHeir无法访问“其”Base的任何内容。特别是,它不能有返回对自身的Base&引用的方法。但为什么它不能返回对另一个Base对象的引用?那么为什么下面的代码不能编译:classBase{};classKid:privateBase{};Baseinstance;classGrandkid:publicKid{constBase&GetInstance()const{r

c++ - 具有取消处理的 async_wait 处理程序类成员

这很好用:classcStartSequence{voidTick(){//dosomething}voidWait(){myTimer->expires_from_now(boost::posix_time::seconds(mySecs));myTimer->async_wait(boost::bind(&cStartSequence::Tick,this));}...};我希望能够取消计时器并让处理程序做一些不同的事情voidTick(boost::system::error_code&ec){if(!ec)//dosomethingelse//dosomethingdiffer

c++ - CMake Find_Package(PythonLibs): Does CMake give a preference to dynamic or static libraries?

当我运行FindPackage(PythonLibs)时,它首先找到静态python库python3.5m.a,而不是python3.5m.so。这是CMake的预期行为吗?我怀疑它不符合CMakebugreport;然而,这个错误报告是在2005年提交的。13年来情况发生了变化。如果共享库有偏好,那么知道为什么CMake会找到静态库而不是共享库吗?我已经通过使用SET()命令告诉CMake正确的库在哪里用于我自己的构建来解决构建问题。我正在寻找一个可以更好地理解CMake在这种情况下的行为的答案,因为我正在尝试解决不同的problem,并在共享库中找到static对我来说似乎很奇怪。

c++ - 模板静态成员的初始化点

当类模板有静态成员时,我们需要该成员的附加(模板化)定义。现在,该定义实际上并没有立即实例化,而是需要实例化封闭模板,并且静态字段需要“使用odr”。到目前为止一切顺利。但是,我在使用GCC/Linux时遇到了令人惊讶的行为。(g++4.7和7.2)#includeusingstd::cout;usingstd::endl;templateclassFactory{public:Tval;Factory():val{}{coutclassFront{public:staticFactoryfac;Front(){coutFactoryFront::fac;namespace{Front

c++ - 依赖模板库的 protected 成员

所以我通读了this问题,我理解模板中依赖名称的前提,以及有时如何必须使用this->限定方法以确保编译器能够正确找到它,但是我遇到了一个场景我不知道如何解决。具体来说,当该方法所属的对象与*this属于同一类型,但它是不同的对象(可能属于不同的子类)时。例如:#includetemplateclassA{protected:virtualvoidfoo()=0;};templateclassB:publicA{};templateclassC:publicB{protected:voidfoo()override{std::coutclassD:publicB{protected:v

c++ - 为什么异常不适用于 OSX 上的 gcc7 和 -static-libgcc?

如果我用gcc-7、-static-libstdc++和-static-libgcc编译这个简单的程序;然后在OSX上运行#include#includeintmain()try{throwstd::runtime_error{"abc123"};return0;}catch(conststd::runtime_error&e){std::cout失败,错误代码为134。为什么它不像在linux上使用相同选项编译时那样打印“abc123”? 最佳答案 已在GCC8中修复(-ish);查看对PR86215的更新和相关的PR80556.

C++ 适当的指针成员初始化

我是C++新手,有Java背景。我有一个类原型(prototype),它设置了两个私有(private)指针对象成员。classDriveController:Controller{public:DriveController(int8_tportTL_,int8_tportTR_,int8_tportBL_,int8_tportBR_,doublewheelSize_,doublebaseSize_);private://Internalchassiscontrollerokapi::ChassisControllerIntegrated*chassisController;okap