草庐IT

static成员

全部标签

c++ - 传递回调成员函数的高效方法

我正在为输入处理程序类设计一个方法。这是一些伪代码...voidInputHandler::ScanEvents(boost::function1&func){//Scankeys,determiningstringtopass//Ifstringfound,callfuncwithstringasitsargumentonobjecttiedtofunc}我不确定如何实现它,或者它是否可能实现,因为函数的全部意义在于将它与其调用者分开。这个想法是一个对象有一个私有(private)成员函数和一个持有它的boost::function成员。每当它在其InputHandler上调用Sca

c++ - 如何使用 <random> header 成员在 C++ 中生成随机数?

我学会了用C#编程,并开始学习C++。我正在使用VisualStudio2010IDE。我正在尝试使用中可用的分发类生成随机数.例如,我尝试执行以下操作:#includestd::normal_distribution*normal=newnormal_distribution(0.0,0.0);std::knuth_b*engine=newknuth_b();std::variate_generator>*rnd;rnd=newvariate_generator>(engine,normal);最后一行给出编译错误:IntelliSense:构造函数“std::tr1::variat

c++ - C++模板成员指针属性实现的一些问题

我的目标是像在C#中一样在C++中创建属性-具有重要的设置/获取行为。在这里,Property的对象包含对prop及其set/get方法的master的引用。Property.h的实现、内容:#includeusingnamespacestd;namespaceFirst{templatestructProperty{Master&master;constType(Master::*&get)()const;Type(Master::*&set)(Typevalue);Property(Master&master,constType(Master::*get)()const,Type(

c++ - 如何只设置一个存在的成员?

编辑:抱歉,这个问题是重复的。原文:SFINAEtocheckforinheritedmemberfunctions我有一个模板函数(在一个用于测试的类中):templatevoidInitHandler(CHandler&handler){handler.setId(0);handler.SetCache(m_pCache.get());handler.m_pScience=m_pScience;}但是,可能会使用没有m_pScience成员的模板参数调用此函数。我能否使用模板元编程仅在该成员存在时设置该成员? 最佳答案 重新想象

c++ - 如何预期 static_assert 失败并使用 Boost.Test 框架处理它?

如果我有一个接受模板参数的方法,该模板参数应该可转换为base_of或与返回类型相同的类型,我应该怎么做?例如,考虑这个方法:templateclassIFoo{public:templateT*as(){static_assert(std::is_same::value||std::is_convertible::value||std::is_base_of::value,"IFoo::as()requiresServiceTtobeabaseofT");...}};现在,我想对其进行BOOST_CHECK!classA{};classB{};BOOST_AUTO_TEST_CASE

c++ - 拥有大型二维数组 : static int vs int

在解决DP相关问题时,我观察到第一个有效但第二个段错误。实际原因是什么?仅使用int的内存限制是多少?intmain(){staticinta[3160][3160];return0;}intmain(){inta[3160][3160];return0;} 最佳答案 因为您可能没有足够的堆栈内存来存储这个大数组。第二个示例在堆栈上创建一个数组,而第一个示例创建的数组不在堆栈上而是在数据/Bss段中的某个位置,因为您使用static限定符明确指定了存储条件.注意c++标准没有规定stack或者heap或者datasegment或者B

c++ - C++中指向成员函数的指针

这实际上是一个国际象棋下棋程序,但是代码太长无法贴在这里,所以我将使用一个更简单的无关示例:假设我有这样一个对象:classA{intx1;intx2;public:intAverage(){return(x1+x2)/2;}};我想要一个名为AveragesList的vector,它存储每个对象的所有x1和x2值的所有平均值(或指向它们的指针)。所以我尝试这样做:vector*AveragesList;classA{intx1;intx2;public:intAverage(){return(x1+x2)/2;}A(){AveragesList.push_back(this->Ave

C++ 访问器——我应该返回一个指向成员变量的指针还是返回实际的成员变量本身?

我希望这里有一个简单的问题。对于我的类的成员变量,它们都是私有(private)的,我应该使用访问器返回一个指针还是返回变量本身?还是我应该做点别的?例子:unsignedint*Object::GetObjectIDPointer(){return&objectID;}或unsignedintObject::GetObjectID(){returnobjectID;} 最佳答案 这在很大程度上取决于你想用它们做什么:如果你计划你的类的用户能够在你的类中修改变量(这是一个可怕的和强烈反对的事情)你可以返回指针或引用;否则,返回变量本

c++ - 从 std::tuple 成员中移除引用

我在STL元组的帮助下实现了一些变量的保存/恢复功能,如下所示:doublea=1,b=2;intc=3;autotupleRef=std::make_tuple(std::ref(a),std::ref(b),std::ref(c));//hereI'msavingcurrentstateofa,b,cstd::tuplesaved=tupleRef;//heregoesblockofcode,wherea,b,andcgetspoiled......................////nowI'mrestoringinitialstateofa,b,ctupleRef=save

c++ - 静态全局函数的静态局部成员?

如果我在静态全局函数中有一个静态局部变量(不是类静态,全局静态)...foo.cpp:staticvoidf(){staticTx;...}是否保证x实例在整个应用程序中都是单例的?如果两个翻译单元如上定义了staticvoidf()会怎么样。他们会各自拥有自己的x实例,还是会共享?为什么? 最佳答案 static函数具有内部链接,因此每个翻译单元中的每个f都是一个不同的独立函数,并且会有一个实例每个翻译单元x个。 关于c++-静态全局函数的静态局部成员?,我们在StackOverflo