草庐IT

c++ - QScopedPointer、boost::scoped_ptr - 为什么提示类型不完整?

我有一个c-Structure,我想将它嵌入到一个cpp类中而不破坏我的全局命名空间,所以我不想包含c-header。这就是为什么我想使用具有前向声明结构名称的智能作用域指针(QScopedPointer或boost::scoped_ptr)。我不明白的是上述两个在编译时失败的作用域指针的实现:boost:errorC2027:useofundefinedtype'xxx'templateinlinevoidchecked_delete(T*x){//intentionallycomplex-simplificationcausesregressionstypedefchartype_

C++ 继承 : scoping and visibility of members

你能解释一下为什么这是不允许的吗,#includeclassB{private:inta;public:inta;};intmain(){return0;}这是什么时候?#includeclassA{public:inta;};classB:publicA{private:inta;};intmain(){return0;}在这两种情况下,我们在classB中都有一个名为a的公共(public)变量和一个私有(private)变量。现在编辑! 最佳答案 Inboththecases,wehaveonepublicandonepriv

c++ - 将 C/C++ 变量放入未命名范围的原因?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:CanIuseblockstomanagescopeofvariablesinC++?我遇到了一些类似于以下的C++代码:intmain(void){intfoo;floatqux;/*dosomestuff*/{intbar;bar=foo*foo;qux=some_func(bar);}/*continuedoingsomemorestuff*/}一开始我以为原作者可能是用大括号把一些相关的变量分组,但是由于设计中的系统没有足够的内存我认为作者可能有意让bar的作用域解析,任何带有in的变量都会消失,而不

c++ - 我可以使用 block 来管理 C++ 中的内存消耗吗?

我试图在C++程序中节省一些内存,我想知道我是否可以使用block作为变量的范围(如在Perl中)。假设我有一个执行一些计算并给出结果的巨大对象,这样做是否有意义:InputTypeinput;ResultTyperesult;{//BlockofcodeMyHugeObjectmho;result=mho.superHeavyProcessing();}/*Myothercode...*/我可以期望对象在退出block时被销毁吗? 最佳答案 是的,你可以。一旦变量超出范围,析构函数就会被调用,它应该释放堆分配的内存。

c++ - boost scoped_lock 互斥锁崩溃

我已经保护了一个std::queue的访问函数,push、pop、size,在这些函数中使用boost::mutexes和boost::mutex::scoped_lock有时它会在作用域锁中崩溃调用栈是这样的:00x0040f005boost::detail::win32::interlocked_bit_test_and_setinclude/boost/thread/win32/thread_primitives.hpp36110x0040e879boost::detail::basic_timed_mutex::timed_lockinclude/boost/thread/wi

c++ - 使用 C+11 和 Newlib 时出现错误 "sigemptyset was not declared in this scope"

在Newlib下的Cygwin上使用sigemptyset时,我们会捕获编译器错误。该错误发生在C++编译器中,但仅在使用-std=XXX时才会发生。如果没有标准选项,测试程序将按预期编译和执行。下面是测试程序,后面是感兴趣的Cygwin头文件。我在Cygwinheader中没有看到任何可疑的内容。我尝试过像#define_GNU_SOURCE和#define_XOPEN_SOURCE700这样的技巧。我还尝试过使用全局和std命名空间等技巧。相关见Whatdoes-D_XOPEN_SOURCEdo/mean?和Namespaceissuesinc++11?.编译失败的原因是什么,我该

c++ - 这个私有(private)变量 "not declared in this scope"怎么样?

我目前正在尝试学习更多有关C++面向对象设计的知识(熟悉Java),但遇到了一些困难。我试图将这个项目放在一起,以在使用SFML构建图形和音频的游戏中学习这些原则。我有以下两个文件。WorldObject.h#ifndefWORLDOBJECT_H#defineWORLDOBJECT_H#include#include#include"ImageManager.h"classWorldObject{private:sf::Sprite_sprite;voidSetImagePath(std::stringpath);sf::SpriteGetGraphic();};#endif世界对象

scope / 作用域(C变量的作用域)

scope/作用域(C变量的作用域)参考:CPrimerPlus第6版第12章存储类别、链接和内存管理目录scope/作用域(C变量的作用域)1.定义2.分类2.1.blockscope/块作用域2.1.1.定义2.1.2.函数的形式参数2.1.3.没有花括号的块2.2.functionscope/函数作用域2.3.functionprototypescope/函数原型作用域2.4.filescope/文件作用域3.总结1.定义描述程序中可以访问identifier(标识符)的区域2.分类scope可以分为四类:2.1.blockscope/块作用域2.1.1.定义block/块是用一块花括号

c++ - 双倍为真/假

Bjarne建议使用if中的条件作为范围限制。特别是这个例子。if(doubled=fd()){//dinscopehere...}我很好奇如何从真/假意义上解释声明。这是一个声明这是双倍的。编辑:在6.3.2.1C++编程语言中作为推荐。Edit2:templatetypedefs对指针的建议,尤其是动态转换,可能会深入了解Bjarnes的建议。SteveJessop告诉我:-条件不是表达式,它也可以是声明,使用的值是被评估的值。 最佳答案 您看到的代码是一种专门用于在if语句中声明变量的技术。你通常会看到这样的东西:if(T*p

c++ - 在 scoped_ptr 出现异常时不调用析构函数

我刚刚开始使用C++boost库。我在很多地方读到,当使用scoped_ptr时,即使出现异常,对象也总是被销毁。Theybehavemuchlikebuilt-inC++pointersexceptthattheyautomaticallydeletetheobjectpointedtoattheappropriatetime.Smartpointersareparticularlyusefulinthefaceofexceptionsastheyensureproperdestructionofdynamicallyallocatedobjects.我尝试了以下代码。#includ