草庐IT

auto_ptr_ref

全部标签

android - XML命名空间声明: auto-substitute package name

我有一个包含多个构建目标的android项目(使用ant)。出于测试目的,这些构建目标都有不同的包名(所以我的包名是com.mycompany.myapp用于发布构建,com.mycompany.myapp.test用于测试构建)。这在大多数情况下都很好用,除非涉及到布局文件中的自定义xml命名空间。所以这个:一旦包名被替换为com.mycompany.myapp.test就会停止工作。因此,我必须在预建期间每次替换com.mycompany.myapp值。而且由于所有这些文件都应该在vcs中,并且每次一个人切换配置并且它们合并时都不应该发生冲突,我不得不将布局文件移动到特定的配置文件

android - Horizo​​ntalScrollView : auto-scroll to end when new Views are added?

我有一个包含LinearLayout的Horizo​​ntalScrollView。在屏幕上,我有一个Button,它将在运行时将新View添加到LinearLayout,并且我希望ScrollView在添加新View时滚动到列表的末尾。我几乎让它工作了-除了它总是在最后一个View之外滚动一个View。它似乎在没有先计算包含新View的情况下滚动。在我的应用程序中,我使用的是自定义View对象,但我制作了一个使用ImageView并具有相同症状的小型测试应用程序。我在Layout和ScrollView上尝试了各种类似requestLayout()的方法,我尝试了scrollTo(In

c++ - 我怎么知道谁持有 shared_ptr<>?

我使用boost::shared_ptr在我的C++应用程序中。内存问题真的很严重,应用程序占用大量内存。但是,因为我将每个新对象放入shared_ptr,当应用程序退出时,不会检测到内存泄漏。必须有std::vector>之类的东西持有资源的池。我怎么知道谁持有shared_ptr,什么时候调试?很难逐行查看代码。代码太多... 最佳答案 仅通过查看shared_ptr,您无法知道“兄弟指针”在哪里。您可以测试一个是否为unique()或获取use_count(),其中othermethods.

c++ - 在库的公共(public)接口(interface)中使用 boost::shared_ptr

我们有一个C++库,我们提供给几个不同的客户。最近,我们从在公共(public)接口(interface)中使用原始指针切换到使用boost::sharedptr。正如您可能猜到的那样,这提供了巨大的好处,因为现在客户不再需要担心谁需要删除什么以及何时删除。当我们进行转换时,我认为这是正确的做法,但让我感到困扰的是,我们必须在我们的公共(public)界面中包含来自第三方库的东西——通常,如果可以的话,你会避免这种事情。我合理化了boost现在实际上是C++语言的一部分,我们的用例要求客户端代码和库都保存指向对象的指针。然而最近我们的一个客户问我们是否可以切换到在接口(interfac

c++ - 在 VS1012 中使用 std::move 将 std::unique_ptr 发送到 std::thread

在VisualStudio2012中出现以下错误。voiddo_something(std::unique_ptri);std::unique_ptri(newint);std::thread(do_something,std::move(i));Error3errorC2248:'std::unique_ptr::unique_ptr':cannotaccessprivatememberdeclaredinclass'std::unique_ptr'c:\programfiles(x86)\microsoftvisualstudio11.0\vc\include\functional

c++ - `auto x = type{...}` 初始化语法和 `explicit` 转换运算符 - clang vs gcc

鉴于此代码(在wandbox上):structX{explicitoperatorint(){return0;}};intmain(){autoy=int{X{}};}以及以下编译器选项:-std=c++1z-Wall-Wextra-Wpedanticg++(测试版本:7、6.1、5.3)拒绝编译代码并出现以下错误error:cannotconvert'X'to'int'ininitializationclang++(测试版本:4、3.8、3.6)顺利编译代码段。哪个编译器在这里做正确的事情?cppreference似乎表明autovar=type{...}语法应该触发显式转换。

c++ - 从隐式转换中复制构造 shared_ptr 有什么问题?

考虑这个最小的例子:#includestructB{typedefstd::shared_ptrPtr;};structA{operatorB::Ptr(){//typeconversionoperator();//|}//|};//|//|intmain(){//|A*a=newA;//|B::Ptr{*a};//copyconstructionfroma'simplicitcasttoB::Ptr----+}shared_ptr的这种无辜的复制结构在g++4.6.3x86_64-linux-gnu上严重失败,但似乎适用于g++4.5(请注意,较新的版本中断,而较旧的版本有效!)。从

c++ - auto 带括号和初始化列表

来自anotherquestion:C++17起,autox0{1,2,3,4};,之前推导出一个初始化列表,现在不再被允许(当然,我们可以使用autox0={1,2,3,4};代替......)。现在一如既往地避免统一初始化(例如std::vectorv({1,2,3,4});,即以初始化列表作为参数的explicit构造函数调用)并类似于定义明确的autox(7);(我自己也不会使用的构造......),我想出了以下内容:autox({1,2,3,4});//->std::initializer_listx({1,2,3,4});这使用GCC7.2.0(mingw64)编译,但发出

c++ - 将 auto 关键字替换为推导类型(clang 或 VS2010)

是否有人编写了脚本、插件或可执行文件,将“auto”的每个实例替换为编译器推断的类型?我需要移植一些到处使用auto的C++11代码。Clang是我的第一个候选人。有没有人修改它来做这样的事情?另一种方法是从编译器解析错误,因为预期的类型可能在错误输出中。我可以-Dauto=int并可能返回"couldnotconvertstd::vector::iteratorto'int'" 最佳答案 不幸的是,这在一般情况下是不可能的。考虑:templatevoidfoo(T&t){autoit=t.find(42);...}...std::

c++ - 嵌套的 shared_ptr 破坏导致堆栈溢出

这更像是一个设计问题(我知道为什么会这样,只是想看看人们如何处理它)。假设我有一个简单的链表struct:structList{inthead;std::shared_ptrtail;};shared_ptr允许在多个列表之间共享子列表。但是,当列表变得很长时,其析构函数中可能会发生堆栈溢出(由shared_ptrs的递归释放引起)。我尝试过使用显式堆栈,但这变得非常棘手,因为一个尾部可以由多个列表拥有。如何设计我的List来避免这个问题?更新:澄清一下,我不是在重新发明轮子(std::forward_list)。上面的List只是真实数据结构的简化版。真正的数据结构是一个有向无环图,