草庐IT

c++ - 初始化 shared_ptr 成员变量,new vs make_shared?

当初始化一个shared_ptr成员变量时://.hclassCustomer{public:Customer();private:std::shared_ptrsomething_;}//.cppCustomer():something_(newOtherClass()){}对比Customer():something_(std::make_shared()){}是否允许使用make_shared版本?我似乎总是看到第一个版本,哪个是首选? 最佳答案 不允许make_shared的唯一时间是:如果您得到一个由其他人分配的裸指针并将

c++ - 在 VS 2015 中编译和链接第三方库

这个问题在这里已经有了答案:HowtoaddadditionallibrariestoVisualStudioproject?(4个答案)关闭3年前。我正在使用VisualStudio2015开发一个C++项目,我正在尝试链接一个外部库(在本例中为libtins)。该库目前位于我的桌面上。我试过在链接器设置下编辑项目设置,但它没有给我任何包含任何自定义库的选项。我如何在VS2015中执行此操作?

.net - 如何跨 VS 版本制作一致的 dll 二进制文件?

例如,winsock库适用于所有版本的visualstudio。但是我很难在所有版本中提供一致的二进制文件。用VS2005编译的dll链接到2008年写的应用程序就不能用了。我把2k5和2k8都升级到SP1了,结果没有太大变化。它可以正常工作。但是,当他们将其包含在C#应用程序中时,C#应用程序会出现访问冲突错误,但对于经典的C++应用程序,它可以正常工作。当我提供dll时,有没有我应该知道的策略? 最佳答案 首先,除了普通的旧数据外,不要跨DLL边界传递任何数据。即结构很好。类不是。其次,确保所有权没有被转移——即任何通过dll边

c++ - 如何在 VS 2008 中安装 boost?

我几乎完全安装了Boost,但是我在如何在工具->选项->项目->VC++目录中设置我的Boost路径时遇到问题。我写了包含文件和库的路径(我的文件夹包含两个子文件夹,lib和include),但是当我尝试使用Boost时#includeboost/regex.hpp,我遇到了这个链接错误:LINK:fatalerrorLNK1104:cannotopenfile'libboost_regex-vc90-mt-gd-1_36.lib您能告诉我如何为VisualStudio2008正确安装Boost吗? 最佳答案 使用BoostIns

C++11/VS2010 : Returning containers of uncopyable but movable objects

考虑以下代码:#include#includestructA:privateboost::noncopyable{A(intnum,conststd::string&name):num(num),name(name){}A(A&&other):num(other.num),name(std::move(other.name)){}intnum;std::stringname;};std::vectorgetVec(){std::vectorvec;vec.emplace_back(A(3,"foo"));//vec.emplace_back(3,"foo");notavailabley

c++ - VS2010编译器定义

在gcc中我正在写friendclassFriendMaker::Type但VisualStudio想要friendFriendMaker::Type.所以我认为是时候转向特定的编译器了。所以我需要什么ifdef对于VisualStudio?我目前使用的是2010,但我可能会切换到2012后者。 最佳答案 使用宏_MSC_VER.检查编译器是否为VS2010或更高版本:#if_MSC_VER>=1600以下是不同版本VS的值:VS2003(VC7.1):1310VS2005(VC8):1400VS2008(VC9):1500VS20

c++ - C++错误代码vs ASSERTS vs Exceptions选项options :( [closed]

Closed.Thisquestionisopinion-based。它当前不接受答案。想要改善这个问题吗?更新问题,以便editingthispost用事实和引用来回答。4年前关闭。ImprovethisquestionCodeInquestion我已经听到(并且反驳)围栏两侧的C++异常口头禅。已经有一段时间了,我只想再次集中我自己,此讨论是特定于我链接的代码(或低级类,例如容器),它是依赖项。我曾经使用C程序员作为防御和error_code,但是这是一种令人厌烦的练习,并且我现在正在以更高的抽象级别进行编程。因此,我正在重写一个容器类(及其依赖项),以使其更灵活,读取效果更好(迭

c++ - vs2012 工具集兼容性

在我的VS2012中,我有4个可用的工具集:v90、v100、v110和v110_xp。我用两个项目teSTLib(静态库)和testexe(控制台应用程序)做了一个简单的测试。该接口(interface)只是一个带有签名的函数voidtest().结果:teSTLib(v90),testexe(v90以外的任何东西)->不链接teSTLib(v100),testexe(v110orv110_xp)->链接但是,我觉得v100和v110会链接起来有点奇怪,所以我试着让场景复杂一点。现在我的方法是这样的:std::maptest(conststd::string&arg).正如预期的那样

c++ - 为什么我会收到错误 C1033 : cannot open program database in VS 2010

在长时间中断C++后,我尝试在VS2010中编译一个非常简单的C++项目。我创建了一个Win32C++控制台空项目,我选择了Noprecompiledheaders和nootherMSlibraries。我添加了以下main.cpp文件:#include#includeusingnamespacestd;classA{public:stringname;};intmain(intargc,char**argv){return0;}当我编译时,我得到了臭名昭著的错误:1>------Buildstarted:Project:TestGetline,Configuration:DebugW

ios - 作为 SubView VS ChildViewController 查看

谁能解释一下我们什么时候应该添加一个UIViewController作为ChildViewController?将其添加为ChildViewController而不是subView有什么好处?请帮助我理解ChildViewController的用途。 最佳答案 当您将ViewController添加为subviewController时,父ViewController将保存一个指向subviewController的强指针,因此它不会立即释放。这不会自动将subview添加到父View中。所以你必须同时调用它们。我只在需要创建多个V