草庐IT

auto_created

全部标签

c++ - Qt "Creating SSL context"错误在几台电脑上

我在基于Qt的C++应用程序中出现“创建SSL上下文时出错”。我已经将这些DLL放在应用程序目录和“C:\Windows\system32”中:-libeay32.dll-libssl32.dll-ssleay32.dll但是还是有问题。这很奇怪,因为该应用程序仍然可以在几乎所有系统上运行。想法? 最佳答案 所有计算机都需要安装MicrosoftVisualC++2008SP1RedistributablePackage(Downloadhere)。安装后,一切正常! 关于c++-Qt"

c++ - 在 C++03 中返回类似 `std::auto_ptr` 的集合的最佳方法是什么?

std::auto_ptr不允许存储在STL容器中,例如std::vector.但是,偶尔会出现需要返回多态对象集合的情况,因此无法返回对象vector(由于切片问题)。我可以使用std::tr1::shared_ptr并将它们粘贴在vector中,但随后我不得不为维护单独的引用计数付出高昂的代价,并且拥有实际内存(容器)的对象在逻辑上不再“拥有”这些对象,因为它们可以在不考虑所有权的情况下从中复制出来。C++0x以std::vector>的形式为这个问题提供了完美的解决方案。,但我无权访问C++0x。一些其他注意事项:我无法访问C++0x,但我可以使用TR1。我想避免使用Boost(

c++ - `auto` 之前是做什么用的?

我知道在C++11之前,auto关键字具有完全不同的含义;它是一个存储类型说明符,指示具有自动存储类型(即,放置在堆栈上)的对象。理论就是这样……您实际上会如何使用此关键字(语法),为什么?另外,我还没有在C++11之前的实际代码中看到过这个关键字;它什么时候有用(什么时间段)? 最佳答案 它用于声明一个具有自动存储持续时间(即“在堆栈上”)的局部变量。至少自C90以来,它一直是一个无用的关键字,因为自动存储持续时间是局部变量的默认存储持续时间。 关于c++-`auto`之前是做什么用的

c++ - 抑制警告 "QApplication was not created in main() thread"

我已经创建了一个基于Qt的网络库,用于不运行Qt事件循环的应用程序,这些应用程序不一定是Qt应用程序。这是通过根据IsitpossibletocreatelocaleventloopswithoutcallingQApplication::exec()?的答案在线程中创建一个QCoreApplication实例来实现的。这工作得很好,但它让Qt不高兴(我想它担心我会尝试在主线程之外操作一个GUI,这不会工作,但我没有),所以它打印一个警告:警告:QApplication不是在main()线程中创建的。我想抑制该警告,否则该警告将打印到X11控制台并且很可能导致我的用户输入一堆不必要的缺

c++ - pthread_create() 和内存泄漏

这个问题好像问的很多。我有一些看起来不错的遗留生产代码,直到它开始每天获得更多的连接。每个连接都会启动一个新线程。最终,它会耗尽内存并崩溃。我将回顾我多年未处理的pthread(和C套接字)。我的教程内容丰富,但我在使用top时看到了同样的事情。所有线程退出,但仍有一些虚拟内存被占用。Valgrind告诉我调用pthread_create()时可能会丢失内存。最基本的示例代码如下。最可怕的部分是,当所有线程退出时,pthread_exit(NULL)似乎在VIRT中留下大约100m的空缺。如果我注释掉这一行,它会更宜居,但仍然有一些。在我的系统上,它以大约14k开始,以47k结束。如果

c++ - const auto * 和 const auto 之间的区别?

我有这个代码:constinta=10;constauto*b=&a;//0x9ffe34constautoc=&a;//0x9ffe34intz=20;b=&z;//0x9ffe38//c=&z;//[Error]assignmentofread-onlyvariable'c'为什么可以将新地址分配给b而不是分配给c? 最佳答案 b将被推导出为constint*,这意味着一个指向constint的非常量指针>,所以改变b本身的值就可以了。c将被推导出为constint*const,这意味着一个const指针指向constint,所

c++ - 当 auto 遇到多态和虚函数时,正确的行为是什么?

classB{public:virtualvoidf(){printf("B\n");}};classD:publicB{public:voidf(){printf("D\n");}};intmain(void){B*d=newD();d->f();autob=*d;b.f();}对于d->f();,输出是D。这是正确的。但是对于b.f();,输出是B。这样对吗? 最佳答案 Isthisright?没错,类型是在编译时推导的。auto使用与templateargumentdeduction相同的规则对于类型推导,基于静态类型,不考虑

c++ auto 多选

在我的项目冒险过程中,我意识到如果我想根据条件初始化参数,我不能利用新的c++11auto关键字的优势。基本上我有这样一个代码片段:autofoo=bar::getfoo();需要更改为:FOOfooif(cond){foo=bar::getfoo();}else{foo=baz::getotherfoo();}但是我需要用类型声明foo(因为编译器不知道我将使用相同的类型返回。我想知道在这种情况下是否有任何使用auto关键字的方法。我想出的另一个解决方案是使用?:具有这样代码的运算符:autofoo=cond?bar::getfoo():baz::getotherfoo();但是如果

c++ - std::auto_ptr、delete[] 和泄漏

为什么这段代码不会导致内存泄漏?intiterCount=1000;intsizeBig=100000;for(inti=0;ibuffer(newchar[sizeBig]);}WinXPsp2,编译器:BCB.05.03 最佳答案 因为你(不)幸运。auto_ptr调用delete,而不是delete[]。这是未定义的行为。尝试做这样的事情,看看你是否幸运:structFoo{char*bar;Foo(void):bar(newchar[100]){}~Foo(void){delete[]bar;}}intiterCount=1

c++ - auto 的编译器问题?错误 : in a declarator-list 'auto' must always deduce to the same type

std::vectorvec;autoi=vec.begin(),j=std::next(i);Error:inadeclarator-list'auto'mustalwaysdeducetothesametype 最佳答案 在Linux上的g++中编译良好,因此它似乎是一个编译器错误。Probablythisone. 关于c++-auto的编译器问题?错误:inadeclarator-list'auto'mustalwaysdeducetothesametype,我们在StackOve