草庐IT

hash-code-uniqueness

全部标签

c++ - 使用 std::unique_ptr 管理 COM 对象

我正在尝试使用智能指针在我的类中保存COM对象,同时避免使用ComPtr。是否可以为此目的使用unique_ptr?我对智能指针很陌生,到目前为止我有点困惑。请考虑以下简化代码:classTexture{private:structComDeleter{operator()(IUnknown*p){p.Release();deletep;}}ID3D11Texture*m_dumbTexture;std::unique_ptrm_smartTexture;public:ID3D11Texture*getDumbTexture()const{returnm_dumbTexture;}ID

c++ - 使用 unique_ptr 成员编写移动构造函数的正确方法(崩溃)

以下代码在VisualStudio2013下会崩溃我想知道为什么:在这种情况下编写移动构造函数的正确方法是什么?删除移动构造函数解决了这个问题。是VC++的错误还是这段代码有误?移动构造函数的默认定义有何不同,这使得这段代码不会崩溃,而我自己的定义会崩溃?#include#includeclassA{};classFoo{public:Foo(std::unique_ptrref):mRef(std::move(ref)){}Foo(Foo&&other):mRef(std::move(other.mRef)){}Foo(constFoo&other){}Foo&operator=(c

c++ - 将 unique_ptr 引用传递给 boost::bind?

我在CentOS6.6(gcc4.4.7)上使用Boost.Asio(1.41)进行开发。我希望io_service在启动时调用manger对象m中的成员函数run()。我尝试编译的代码如下所示:#include#include#includeboost::asio::io_serviceio;std::unique_ptrm;m=std::make_unique;io.post(boost::bind(&manager::run,&m));gcc对boost::bind语句进行了调整,其中包括:/usr/include/boost/bind/mem_fn_template.hpp:4

Redis 数据类型及其常用命令一(string、list、set、zset、hash)

1、简介    Redis的常用数据类型有十种,分别为:string、list、set、zset、hash、geo、hyperloglog、bitmap、bitfield、stream。熟练使用各种数据类型,能够快速结合场景进行使用。注:我们所说的数据类型是指value的数据类型,key都是字符串。所有类型的命令查看:help@数据类型;例如help@string2、Redis的key常用命令#1、查看当前库所有keykeys*#2、判断某个key是否存在existskey#3、查看key的类型是什么typekey#4、删除指定的key,会发生阻塞delkey#5、非阻塞删除,仅仅将key从k

c++ - 将具有 unique_ptr 的类的构造函数作为成员复制到抽象类

我有一个类(C),它有一个vector的unique_ptr到一个抽象类(A)作为成员(member)。这是因为C必须与A类型的所有类一起工作,即它的子类。问题是我不知道如何为C编写复制构造函数,因为指针指向的对象的类型在编译时是未知的。在我看来这实际上是不可能的。任何人都可以确认这是不可能的吗?你对如何解决这个问题有什么建议吗?有一个没有复制构造函数的类是不是太糟糕了? 最佳答案 你没有说你是否控制抽象类和从它派生的类的代码。如果这样做,那么最简单的方法是在抽象类中提供一个纯虚方法Clone并在派生类中实现它。此方法应处理创建正确

c++ - 为派生类专门化 std::hash 在 gcc 中工作,而不是 clang

我正在尝试为派生类专门化std::hash。目前最好的方法是基于thisanswer:#include#include#includenamespacefoo{templateusingfirst=T;structhashable{};structbar:publichashable{};}namespacestd{templatestructhash::value>>>{size_toperator()(constT&x)const{return13;}};}intmain(){std::unordered_setbaz;return0;}使用g++5.2.0编译时没有警告(-Wal

c++ - 为继承 enable_shared_from_this 的类获取 unique_ptr

通常我更喜欢从工厂返回unique_ptr。最近我遇到了为继承enable_shared_from_this的类返回unique_ptr的问题。此类的用户可能会意外调用shared_from_this(),尽管它不属于任何shared_ptr,这会导致std::bad_weak_ptr异常(或C++17之前的未定义行为,通常作为异常实现)。代码的简单版本:classFoo:publicenable_shared_from_this{stringname;Foo(conststring&_name):name(_name){}public:staticunique_ptrcreate(c

服务开机启动(code=exited, status=203/EXEC)错误,由于SELinux 开启安全模式

开机自启动配置:在网上看了好多关于出现 (code=exited,status=203/EXEC)错误的原因,主要有以下几点:原因1:systemctl执行脚本时需要知道脚本的解释器原因2:目标目录的执行权限不够原因3:要执行的脚本编码格式不正确原因4:定义的workingdirectory路径有问题参考连接:定义服务开机启动code=exitedstatus=203/exec错误systemctl自定义service执行shell脚本时报错codeexitedstatus203EXEC_(code=exited,status=203/exec)-CSDN博客bug,以上问题都不是我出现问题的

c++ - VS Code 不会构建具有多个 .ccp 源文件的 C++ 程序

请注意,我在Ubuntu17.10上使用VSCode并使用GCC编译器。我在构建一个使用附加.ccp文件的简单程序时遇到了问题。我可能在这里遗漏了一些明显的东西,因为我对编程还很陌生,但我会解释到目前为止我做了什么。这是阻止我继续我正在做的教程的原因。我写了一个非常简单的程序来证明我的观点如下。主.ccp#include#include"Cat.h"usingnamespacestd;intmain(){speak();return0;}目录.h#pragmaoncevoidspeak();猫.ccp#include#include"Cat.h"usingnamespacestd;vo

【C/C++】在VSCode中配置C/C++环境(使用gdb和code-runner两种方式配置)

VSCode是很常用的代码编辑器,但相对于DevC++,VSCode需要进行一些配置才能运行C/C++的代码。以下为个人实践过程:文章目录一、下载编辑器和编译器1.VSCode编辑器:(1)下载(2)安装2.MinGW-w64编译器:(1)下载(2)安装二、设置环境变量三、在VSCode中下载必要的插件四、配置C/C++环境1.使用gdb调试配置(1)新建一个存放C/C++项目的文件夹(2)配置编辑器环境(3)配置task.json编译任务(4)配置launch.json调试任务(5)保存,重启VSCode2.使用code-runner配置环境一、下载编辑器和编译器1.VSCode编辑器:(1