草庐IT

unique_id

全部标签

c++ - std::move(std::unique_ptr()) 组合是否有标准缩写?

我终于要将我的代码库迁移到C++11,这会产生更短更好的代码。但是我发现当我用一个新的指针调用函数时,它比以前长了很多:voidaddCallback(Callback*);//Takesownershipofcallback.//...addCallback(newCallback);//Clear.成为voidaddCallback(std::unique_ptr);//Nocommentneedednow!//...addCallback(std::move(std::unique_ptr(newCallback)));//bleh.提议的make_unique()模板函数只会在

Apple Mach -o Linker(ID)错误?

我正在尝试构建由Unity构建的这个Xcode工作区。在构建项目的最后(链接)结束时,修改项目后,我会出现AppleMach-OLinker(ID)错误。我无法打开错误选项卡,以查看到底是什么导致错误。它所说的只是“链接器命令失败了出口代码1(使用-v查看调用)。还有两个AppleMach-OLinker(ID)错误,但我不知道如何解决它们。任何帮助是极大的赞赏!我无法扩展这些标签。这是扩展的警告选项卡,两个AppleMach-OLinker(ID)警告是相同的看答案这个问题有不同的解决方案,其中之一就是设置启用比特代码至不。(我不知道为什么默认这是是的)这个问题是像鬼这样的问题。清除缓存,重

c++ - 从 hWnd 获取(资源)ID

在ResourceHacker中,当您打开一个可执行文件(windows)时,您可以看到与对话框关联的标识符。有谁知道他们来自哪里?我的意思是,如何在我的C++程序中执行相同的操作以从HWND获取ID?顺便说一句,GetWindowLong(hwnd,GWL_ID)返回0。谢谢 最佳答案 GetWindowLong(hwnd,GWL_ID)返回对话框中控件的标识符,但它不能用于对话框本身,因为对话框根本没有标识符。与对话框关联的标识符实际上用于引用资源blob本身,而不是窗口。它们用于创建对话框(参见CreateDialog()。一

c++ - unique_ptr 释放会导致内存泄漏吗?

我对unique_ptr.release()感到困惑。我的目标是投出一个unique_ptr基类到派生类的unique_ptr。所以我找到了这个question答案是Derived*tmp=dynamic_cast(basePointer.get());std::unique_ptrderivedPointer;if(tmp!=nullptr){basePointer.release();derivedPointer.reset(tmp);}或std::unique_ptrderivedPointer(static_cast(basePointer.release()));然后我想知道

c++ - 多重继承和unique_ptr销毁

我有经典的(可能有问题的)多重继承菱形方案。B继承了AC继承了AD继承了C和B我想要一个std::vector可以包含C或D对象,所以我将其设为std::vector这是D爸爸和它工作正常。但是当我使用:std::vector>然后我在破坏vector时出现段错误。**glibcdetected***./a.out:free():invalidpointer:0x0000000009948018***为什么会有差异?对我来说,即使是第一次实现也是有问题的。代码#include#include#includeclassA{public:A()=default;};classB:publi

c++ - 数字常量之前的预期非限定 ID

templateclassWrap{//stuffs};如果我将模板实例化为Wrap4>p;有什么问题??我收到expectedunqualified-idbeforenumericconstant错误。如何解决这个问题? 最佳答案 更改Wrap4>p;至Wrap4)>p;第一个>encountered被视为模板参数列表的末尾,而不是大于运算符>ISOC++[14.2/3]Whenparsingatemplate-id,thefirstnon-nested>istakenastheendofthetemplateargument-l

c++ - 在工厂中返回 unique_ptr

也许这是一个简单的问题,因为我对C++还是个新手。我想使用某种工厂来封装我的应用程序中的日志记录。这个想法是只有工厂知道哪个具体类将处理函数调用。应用程序将始终调用基本日志记录类的抽象接口(interface)。工厂方法应该是这样的:std::unique_ptrFactory::getDefaultLogger(conststd::string¶m){returnnewConcreteLoggingClass(param);}ConcreteLoggingClass是AbstractLoggingClass的子类。但是我得到以下错误:Error:couldnotconvert

c++ - 是否保证 std::unique_ptr 删除顺序?

我正在制作一个控制我的应用程序的全局单例,我希望子系统以特定顺序启动和关闭。classApp{public:App();~App();voidstart();voidrun();voidshutdown();private:std::unique_ptrdisplayManager;std::unique_ptrrenderer;};构造函数以正确的顺序创建指针App::App(){displayManager=std::unique_ptr(newDisplayManager);renderer=std::unique_ptr(newRenderer);}并且我希望以相反的顺序释放u

编辑铁轨中的关联资源;如何通过ID找到对象?

1)当我在edit.html.erb中使用链接“edit”时,其字段将被第一个对象的归类填充(task)。好像我使用该方法.first而是方法.find(id)。但是我需要编辑适当的对象,并非总是第一个对象。我试图更改taskscontroller:@project=Project.find(params[:project_id])@task=@project.tasks.find_by(project_id:params[:id])这样:@project=Project.find(params[:project_id])@task=Task.find(params[:id])并收到:Acti

c++ - unique_ptr 的取消引用运算符在 Eclipse 中不起作用

按照thispost中的步骤操作后我设法让Eclipse(Indigo)识别unique_ptr(和其他C++11新东西)。问题是operator->forunique_ptr似乎在Eclipse中不受支持。这里有一个例子:classFoo{voidbar(){/*...*/}};std::unique_ptrfoo;(*foo).bar();//1foo->bar();//2Case1按预期工作:没有错误并且自动完成工作。然而,对于案例2,Eclipse将语句标记为错误(“无法解析方法'bar'”),而且foo->的自动完成功能不起作用。最有趣的是,我对std::shared_ptr