草庐IT

C_Func_using_Func_ptr

全部标签

c++ - 如何从 vector 中删除 shared_ptr

像下面的代码,m_vSprites是shred_ptr的vector,如果他的一个元素更新失败,我想从vector中删除它,但是当我想使用删除时我的代码崩溃了。但我不明白为什么,有人可以帮忙吗?我需要使用erase的原因是因为我的应用程序会不断地向vector中添加元素,但如果某些元素满足它们的终止条件,也会不断地从vector中删除对象。如果我不删除它,vector会随着程序的运行而变得巨大!RECTrcOldSpritePos;typedefboost::shared_ptrSmartSprite;vector::iteratorsiSprite;for(siSprite=m_vS

c++ - std::tr1::shared_ptr 是否会抛出 bad_alloc 并且在 try/catch block 中是个好主意?

我实际上正在制作一个简单的C++SFML游戏,我想学习更多关于C++编程的知识。现在我正在使用shared_ptr来管理资源。创建新资源时,我对shared_ptrs有一些疑问,例如:shared_ptrresource(newResource(World::LEVEL));根据boostshared_ptr(Y*p)throwsbad_alloc。我不知道std::tr1是否也这样做。而且我不知道我是否应该担心将shared_ptr放入try/catchblock中以检查是否抛出bad_alloc。这是一个好的编程习惯吗? 最佳答案

c++ - 错误 : Label "foo" used but not defined

所以我在使用一些C++代码时遇到了前面提到的错误,代码看起来有点像这样:#includeusingnamespacestd;charfoodstuffs;voidfruit(){cin>>foodstuffs;switch(foodstuffs){case'a':gotofoo;break;case'b':gotofooo;break;}}intmain(){cout确切的代码要复杂得多,但这只是为了向您展示我遇到的错误。现在我意识到每个人都出于某种原因鄙视“goto”语句,但我的实际代码中充满了太多的goto,以至于我真的没有时间/耐心回去更改它们。此外,我是一名新手程序员,我发现g

c++ - 错误 : expected primary-expression before ‘>’ : templated function that try to uses a template method of the class for which is templated

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭8年前。在使用模板和仿函数(未出现在这个问题中)时,我最终遇到了以下简化的问题。以下代码(也可用here)classA{public:templateboolisGood(intin)const{constTf;returninbooltryEvaluator(T&evaluator,intvalue){returnevaluator.isGood(value);}intmain(intargc,constchar*argv[]

c++ - 什么是 `using namespace std;` ,为什么我需要它来使用最新的 C++ 编译器编译程序?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklist关闭9年前。Improvethisquestion什么是usingnamespacestd;在最近的C++中?在TurboC++等旧编译器中,这似乎不受支持,因为它会导致编译器错误。在最近的C++编译器中,这是编译和运行程序的唯一方法。

c++ - 高效优雅地返回放置的 unique_ptr

我发现(thankstoaStackOverflowcomment)我的代码中存在安全漏洞:std::vector>items;templateItem&create(TS&&...mArgs){autoitem(newItem(std::forward(mArgs)...);items.emplace_back(item);//Possibleexceptionandmemoryleakreturn*item;}基本上,如果emplace_back抛出,使用原始new分配Item可能会泄漏内存。解决方案永远不会使用原始new,而是在方法主体中使用std::unique_ptr。std

c++ - 为什么 push_back 在包含 unique_ptr 的结构上成功,除非该结构具有自定义析构函数?

当且仅当我删除Foo的自定义析构函数时,以下代码才能编译。structFoo{std::unique_ptrbar;~Foo(void){}//ThisLine};std::vectorfoos;foos.push_back(Foo());以下是我认为我对这种情况的理解:失败是因为unique_ptrs无法复制,std::vector::push_back(thing)调用thing's复制构造函数。如果我写Foo显式移动bar的自定义复制构造函数,那么一切都会好起来的。但是,禁用ThisLine将导致代码编译。我认为即使没有ThisLine也应该编译失败,因为我仍在尝试push_ba

c++ - 尝试理解 std::enable_shared_from_this<T> 但使用它会导致 bad_weak_ptr

我试图理解std::enable_shared_from_this类的行为,但我无法理解。所以我写了一个简单的程序来测试不同的情况。问题谁能解释一下下面代码的行为,因为我无法解释观察到的结果。谢谢你的帮助。代码#include#includestructC:std::enable_shared_from_this{};intmain(){{//test1std::shared_ptrfoo,bar;foo=std::make_shared();bar=foo->shared_from_this();//okstd::coutfoo=std::shared_ptr(newC);std::

c++ - 在库接口(interface)中提供对 weak_ptr 的访问是否明智?

我编写了一个库,公开了对多个相关对象类型的引用。所有这些对象的生命周期都由库在内部通过boost::shared_ptr管理。根据库的性质,库的用户还可以知道任何公开对象的生命周期。所以他们可以存储指针或保留对这些对象的引用。他们这样做并知道这些对象何时不再有效是合理的。但我对强制我的用户讲道理感到内疚。公开库是否可以接受weak_ptr的对象?其他图书馆有这样做吗?我已经分析了这个库在应用程序中的使用情况,发现它对任务至关重要,无法公开weak_ptr独家。让匹配的API函数公开一个引用或一个weak_ptr或使任何对象能够公开一个weak_ptr是否更明智?对自己?

C++智能指针之unique_ptr

C++智能指针之unique_ptr前言一、unique_ptr1.1unique_ptr类的初始化1.2unique_ptr禁止拷贝和赋值1.3release、reset函数1.4向unique_ptr传递删除器1.5unique_ptr与动态数组的使用总结前言  在C++中,动态内存的申请和释放是通过运算符:new和delete进行管理的。其中new负责申请内存,delete负责释放内存。  动态内存的使用很容易出现问题,这主要在于你需要保证在正确的时间释放内存,这是比较困难的,如果你忘记释放内存,就会造成内存泄露;有时在还有指针引用内存的情况下我们就释放了它,在这种情况下就会产生引用非法