草庐IT

成员方

全部标签

c++ - 成员函数返回指向成员函数的指针

我想要一个带有成员函数的类,该类返回指向成员函数的指针。也就是说,类似于:classFoo{//typedef????(Foo::*func)????public:Funcs1();Funcs2();Funcs3();}FuncFoo::s1(){//dostuffreturn&Foo::s2;}FuncFoo::s2(){//dostuffreturn&Foo::s3;}FuncFoo::s3(){//dostuffreturn0;}基本上,我尝试做的是实现一个状态机,其中每个状态现在都是下一个状态并通过函数指针返回它。注意:我对其他实现状态机的方法不感兴趣。我真的很想知道它是否可以

c++ - 检查成员是否存在并调用它或什么也不做

我有一个带有init()方法的模板类,如果它存在,则必须调用子类方法。基类的方法init()永远调用。templateclassBase{templatevoidinit(Args...args);Tsubj;explicitBase(){subj=newT();}}templateBase::init(Args...args){invoke_if_exists(args);//需要实现invoke_if_exists模板。算法应该是这样的代码if(method_exists(T::init)){subj->init(Args...);}我需要将它包装到模板中非常感谢。[更新]:让我尝

C++如何访问派生类中的基类静态成员?

我是C++静态变量的新手。我不知道如何从派生类成员函数访问base的静态成员。示例#includeclassbase//baseclass{protected:staticintvalue;};intbase::value=0;//staticvariableinitalizationclassderived:publicbase{public:get_variable();};我知道静态变量是一个类变量。我们只能使用未与对象绑定(bind)的类名来访问(如果我错了请纠正我)。我的问题是如何在成员函数中访问静态变量派生类get_varible访问静态变量?

c++ - 如何获得指向虚拟成员函数的 "direct"函数指针?

我在一个嵌入式平台上工作,该平台不能很好地处理动态代码(根本没有推测/OOO执行)。在这个平台上,我经常在同一个对象上调用虚拟成员函数,但是编译器无法优化vtable-lookup,因为它似乎没有识别出仅在第一次调用时才需要查找。因此我想知道:是否有一种手动方法可以将C++类的虚拟成员函数去虚拟化,以获得直接指向已解析地址的函数指针?我查看了C++函数指针,但由于它们似乎需要指定类型,我想这不会成功。提前致谢 最佳答案 没有通用的仅标准C++方法来查找虚函数的地址,仅给出对基类对象的引用。此外,没有合理的type,因为this不需要

c++ - 在聚合初始化列表中的给定位置,传递到先前位置的值是否可以安全地从相应成员读取?

这个问题在这里已经有了答案:Isitdefinedbehaviortoreferenceanearlymemberfromalatermemberexpressionduringaggregateinitialization?(4个答案)关闭7年前。struct{inta,b;}s={5,s.a+1};按照标准,在上面的例子中读取“s.a”是安全的,所以s被初始化为a=5和b=6吗?如果是这样,大多数编译器都遵守这条规则吗?(以上在VC10编译。)

c++ - 不接受静态成员函数作为 constexpr 参数

以下代码被clang接受并被gcc拒绝。我想知道这是一个错误还是我遗漏了什么:#includetemplatestaticconstexprTApply(Tin,Tfun(T)){returnfun(in);}templatestructTriangle{usingAr=std::array;staticconstexprArfoo(Arline){returnline;}staticconstexprArresults=Apply({{1}},foo);//foo({1});isok};templateconstexprstd::arrayTriangle::results;intm

C++成员初始化、复制初始化和默认初始化

摘自TheC++ProgrammingLanguage,第4版,“17.3.1没有构造函数的初始化”部分,第489页书中示例中标记的行无法编译并出现此错误-$g++-std=c++11ch17_pg489.cppch17_pg489.cpp:Infunction'intmain()':ch17_pg489.cpp:32:34:error:couldnotconvert's9'from'Work'to'std::string{akastd::basic_string}'Workcurrently_playing{s9};//copyinitialization我有Cygwin$g++--

c++ - 为什么未初始化的 const 成员在 C 中的处理方式与在 C++ 中的处理方式不同?

这个问题在这里已经有了答案:constinCvsconstinC++(5个答案)关闭7年前。我为要链接的库包含一个Cheader。header有一个结构foo,我想在其中声明一个新变量bar。我收到编译器错误:error:uninitializedconstmemberin"structfoo"这些成员需要初始化是有道理的,因为以后不能为它们赋值。但是使用这个库的C程序可以做完全相同的事情并且它可以工作。C和C++标准有区别吗?这只是一个示例。实际上,我指的是libmtd.h(mtd-utils)中的结构mtd_dev_info。http://mtd-utils.sourcearchi

java - 返回对成员变量的引用时的 SWIG-Java 内存管理

我正在使用SWIG从Java访问C++代码。C++中的getter通常返回const引用:classB{public:constA&getA()const{returna_;}private:Aa_;};生成SWIG包装器。Java中的B::getA按预期返回引用。然而JVM并不知道这个引用与classB相关联。这可能会导致引用损坏:publicAcreateA(){Bb=newB();returnb.getA();}一旦垃圾收集器销毁Bb并且JVM对此一无所知,从createA返回的对象将无效。SWIG提供了解决此问题的文档:referencesandswig.然而,这意味着我需要手

c++ - "Define"类构造函数中的成员函数

大家好,我想知道您是否能够在类的构造函数中定义或实例化一个函数。假设您有这个简单的类:classcTest{public:cTest(boolbla);~cTest(){}voidsomeFunc(){}};cTest::cTest(boolbla){if(bla){someFunc=functionBody1;//orsomeFunc{functionBody1};//orsomethingdifferent}elsesomeFunc=functionBody2;}如果someFunc是一个经常被调用的函数,您可以避免每次调用该函数时都测试“bla”是否为真。我想了想,想到了两种可能