草庐IT

make_member_delegate

全部标签

c++ - std::make_unique 可以与抽象接口(interface)一起使用吗?

考虑以下代码行:autosource1=std::unique_ptr(newGpsDevice(comPort,baudrate));autosource2=std::unique_ptr(newGpsLog(filename));如何使用VS2013支持的新std::make_unique函数来编写?有可能吗?**我的问题是我不知道如何告诉std::make_unique要实例化哪种对象。因为只有构造函数的参数被传入,所以似乎无法控制它。 最佳答案 std::unique_ptrbase_ptr=std::make_unique

c++ - 错误 C2039 : 'find' : is not a member of 'std'

我刚遇到一个奇怪的错误,说find不是std的成员。errorC2039:'find':isnotamemberof'std'errorC3861:'find':identifiernotfound基本上,我想查找是否可以在vector中找到一个字符串知道为什么会这样吗?代码帮助告诉我在std中有find方法。这基本上就是我所做的:#include"OperatorUtil.h"#include#include#include#include#includeusingnamespacesaeConfig;namespaceoperatorUtil{boolisIn(constFilte

c++ - `std::make_shared<POD>()` 值是否初始化我的 POD?

是否std::make_shared()值初始化我的POD?如果是,这是标准保证的吗?如果不是(正如我怀疑的那样),有没有办法做到这一点?我猜std::make_shared(POD())会做,但这是我应该做的吗? 最佳答案 是的,它是值初始化的,这是由标准保证的:§20.7.2.2.6,2:(关于make_shared)Effects:AllocatesmemorysuitableforanobjectoftypeTandconstructsanobjectinthatmemoryviatheplacementnewexpress

c++ - 标准库中 boost::make_transform_iterator 的等价物是什么?

处理constvector时,以下内容不起作用:conststd::vectorv;v.push_back("test");//error:vcannotbemodified相反,您必须在构造它的同一行上初始化vector。然而,即使有这个限制,boost::make_transform_iterator使得在将它们插入v之前对另一个vector的元素做一些事情变得容易。在这个例子中,convert是一个一元函数,返回输入元素的转换版本:autobeg=boost::make_transform_iterator(args.begin(),convert);autoend=boost:

c++ - 委派构造函数 : an initializer for a delegating constructor must appear alone

我有一对构造函数,它们在C++03风格中工作得很好。其中一个构造函数调用父类(superclass)(或基类)构造函数...classWindow:publicRectangle{public:Window():win(newRawWindow(*this)){refresh();}Window(Rectangle_rect):Rectangle(_rect),win(newRawWindow(*this)){refresh();}...我正在尝试弄清楚如何使用新的C++11委托(delegate)构造器功能来稍微整理一下。但是,下面的代码给出了以下编译器错误...classWindo

用于 C++ 回调的 C# 委托(delegate)

我想我已经基本了解如何为回调编写c#委托(delegate),但是这个让我感到困惑。c++定义如下:typedefint(__stdcall*Callback)(longlCode,longlParamSize,void*pParam);我的C#方法是:unsafedelegateintCallbackDelegate(intlCode,intlParamSize,IntPtrpParam);虽然这似乎是不正确的,因为我得到了一个PInvokeStackInbalance错误,这意味着我对委托(delegate)的定义是错误的。函数的其余参数是字符串或整数,这意味着它们不会导致错误,如

c++ - make_shared是否为每个成员变量做一个默认的初始化(零初始化)

将普通结构(或类)与普通旧数据类型和对象作为成员。请注意,没有定义默认构造函数。structFoo{intx;inty;doublez;stringstr;};现在,如果我在堆栈上声明一个实例f并尝试打印其内容:{Foof;std::cout结果是为x、y和z打印的垃圾数据。并且该字符串默认初始化为空。符合预期。如果我创建一个shared_ptr的实例使用make_shared并打印:{shared_ptrspFoo=make_shared();coutxyzstr那么,x、y、z都是0.这使得shared_ptr看起来在构造对象实例后对每个成员执行默认初始化(零初始化)。至少这是我在

c++ - Visual Studio 编译器警告 C4250 ('class1' : inherits 'class2::member' via dominance)

以下代码生成警告C4250。我的问题是,最好的解决方案是什么?classA{virtualvoidfunc1();}classB:publicA{}classC:publicA{virtualvoidfunc1();}classD:publicB,publicC{}intmain(){Dd;d.func1();//Causeswarning}根据我的阅读,应该可以这样做:classD:publicB,publicC{usingB::func1();}但是,这实际上并没有做任何事情。我目前解决的方法是:classD:publicB,publicC{virtualvoidfunc1(){B

c++ - 委托(delegate)构造函数在使用类字段作为参数时会出现段错误

实际上,段错误发生在我试图编译的另一个程序中,这是由于这种行为而发生的。我的问题是:Thisisabugormyfault?可以任何方式复制(即使something字段是私有(private)的或protected),这是我的示例:ma​​in.cc:#includeclassTest{public:constchar*something="SOMETHINGHERE!!!";Test(constint&number):Test(something,number){}//XXX:changed`something`to`_something`tomakeitdifferentTest(

properties - Kotlin:如何避免委托(delegate)属性中的自动装箱(垃圾)?

在我的软件中,我有一些使用属性委托(delegate)的各种值。这是一个简单的类似示例,展示了我的工作:classExampleDelegate(valvalue:T){operatorfungetValue(thisRef:Any?,property:KProperty)=value}valexamplebyExampleDelegate(1000)//numberlargerthan127(noboxcache)然而,我注意到,引用这个值似乎会在EVERY引用上创建一个自动装箱对象(java.lang.Integer)。因为该值必须每秒可能被引用数百万或次,这会导致我的软件产生大量