草庐IT

alias-method-chain

全部标签

c++ - 如何在 C++ 中创建 map<string, class::method> 并能够搜索函数并调用它?

我正在尝试在C++中创建字符串和方法的映射,但我不知道该怎么做。我想做这样的事情(伪代码):mapmapping={"sin",Math::sinFunc,"cos",Math::cosFunc,...};...string&function;handler=mapping.find(function);intresult;if(handler!=NULL)result=(int)handler(20);老实说,我不知道在C++中是否可行。我想要一个字符串、方法的映射,并且能够在我的映射中搜索函数。如果存在给定的函数字符串名称,那么我想用给定的参数调用它。

c++ - 构造字符串 ("Plain Old C chain") 是右值吗?

我想知道在调用foo(string)时是否进行了复制省略以下。(注:foo(string)属于我无法更改的接口(interface))。为此我尝试检查是否构造了string("Helloworld!")是rvalue.我搜索了如何以编程方式执行此操作并找到了这篇文章:HowtodetermineprogrammaticallyifanexpressionisrvalueorlvalueinC++?voidfoo(stringstr){cout::value结果是Helloworld!0我以为我会得到true至is_rvalue_reference::value我哪里错了?string(

C++ 模板类特化 : why do common methods need to be re-implemented

在示例中:#includeusingnamespacestd;classB{public:virtualvoidpvf()=0;};templateclassD:publicB{public:D(){}virtualvoidpvf(){}private:stringdata;};templateclassD:publicB{public:D();virtualvoidpvf(){coutd1;Dd2;}我收到以下错误:test.cpp:(.text+0x1c):undefinedreferenceto`D::D()'请注意,我不只是专门化D()本身的原因是我想消除对字符串D::data

c++ - C++ 中的 "As a rule of thumb, make all your methods virtual"- 合理的建议?

我只是偶然看到了标题中的陈述。完整的报价是:Asaruleofthumb,makeallyourmethodsvirtual(includingthedestructor,butnotconstructors)toavoidproblemsassociatedwithomissionofthevirtualkeyword.我在Wrox的书ProfessionalC++中找到了这个。Youcangoogleittocheck.这有什么关系吗?我原以为您只会提供选择的扩展点,而不是默认的可扩展性。例如,a2001articlebyHerbSuttersaysso.从那以后,有什么发生了巨大

c++ - C++ 中的多态性 : Calling an overridden method

首先,我是一名Java编码员,想了解C++中的多态性。我为学习目的编写了示例:#includeusingnamespacestd;classA{public:virtualvoidfoo(){std::cout我预计overridenfoo会被打印出来,但事实并非如此。为什么?我们覆盖了classB中的方法foo,我认为应该调用哪个方法的决定是根据对象的运行时类型做出的,在我的例子中是B,但不是静态类型(在我的例子中为A)。实时示例是there 最佳答案 当你这样做时:Ac=B();您正在将B值转换为A。你不想这样。您应该创建一个B

c++ - 自动矢量化 : Convincing the compiler that alias check is not necessary

我正在做一些图像处理,为此我受益于矢量化。我有一个可以矢量化的函数,但是我无法让编译器相信输入和输出缓冲区没有重叠,因此不需要进行别名检查。我应该可以使用__restrict__来做到这一点,但是如果缓冲区在作为函数参数到达时未定义为__restrict__,则无法让编译器相信我是绝对确定2个缓冲区永远不会重叠。这是函数:__attribute__((optimize("tree-vectorize","tree-vectorizer-verbose=6")))voidthreshold(constcv::Mat&inputRoi,cv::Mat&outputRoi,constunsi

c++ - 术语 "method"是否由 C++ 标准定义?

术语“方法”通常用于讨论C++代码。独立术语在C++中有明确定义的含义还是模棱两可?是否可以单独使用该术语,或者是否应该对其进行限定(例如“类方法”或“虚拟方法”),还是应该完全避免使用? 最佳答案 C++标准中没有定义术语方法。该术语使用成员函数。BjarneStroustrup然而在他自己的glossary中定义了术语方法。作为虚拟成员函数。因此,这表明该术语是可以接受的。 关于c++-术语"method"是否由C++标准定义?,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么复制构造函数 "chained"不像默认构造函数和析构函数?

为什么不链接复制构造函数(如默认ctor或dtor),以便在调用派生类的复制构造函数之前调用基类的复制构造函数?使用默认构造函数和析构函数,它们分别在从基到派生和派生到基的链中调用。为什么复制构造函数不是这种情况?例如这段代码:classBase{public:Base():basedata(rand()){}Base(constBase&src):basedata(src.basedata){cout复制构造函数不会(不能)真正复制对象,因为Derived::Derived(constDerived&)无法访问basedata以改变它。我是否缺少关于复制构造函数的一些基本知识,因此我

c++ - 良好做法 : Default arguments for pure virtual method

我创建了一个抽象基类,它有一个带有默认参数的纯虚方法。classBase{...virtualsomeMethod(constSomeStruct&t=0)=0;...}classDerived:publicBase{...virtualsomeMethod(constSomeStruct&t=0);...}所以我想知道将默认参数设置为纯虚拟方法并将整体设置为虚拟方法是一种好习惯吗? 最佳答案 实际上,您的代码是默认参数最糟糕的使用模式之一,因为它涉及继承和多态行为。我支持查看相关的ScottMeyers提示的建议,但这里有一个简短

node.js - "Object {} has no method ' 尝试将项目添加到 Mongoose 数组时转换为 ' error"

我正在尝试使用node.js、mongoose和Backbone创建一个todo应用程序以用于学习目的。到目前为止,我定义了这些模型:varTaskSchema=newmongoose.Schema({title:{type:String},content:{type:String},created:{type:Date,'default':Date.now},due:{type:Date},accountId:{type:mongoose.Schema.ObjectId}});varTask=mongoose.model('Task',TaskSchema);varAccountSc