草庐IT

c++ - 我可以确定线程是否具有 QEventLoop 吗?

我正在编写一个WindowsDLL,它可以在QApplication下运行,也可以在常规Win32应用程序下运行。我想使用需要事件循环的QtNetworking类。如果在常规Win32(非Qt)应用程序中运行,我必须启动QThread或QEventLoop以使Qt网络信号和槽工作。注意:DLL使用QtWinMigrate。但是如果运行在一个QApplication中,已经有一个事件循环,不需要启动一个新的QThread。有没有办法检查现有的QEventLoop?澄清DLL在大型遗留代码库下运行,我的类运行的线程可能是也可能不是QThread。 最佳答案

c++ - 我可以将一个对象类转换为它在其中实现的接口(interface)指针吗?

我定义了一个接口(interface)类,如下所示。classIRecyclableObject{public:virtual~IRecyclableObject(){}virtualvoidrecycle()=0;virtualvoiddump()=0;virtualintgetRecycleTypeID()=0;};下面是我的CharacterAI类,它继承了另一个类并实现了上面的接口(interface)类。定义如下。classCharacterAI:publicharp::Character,publicharp::IRecyclableObject{public:Charac

c++ - 我可以使用 std::bind 到 "attach"状态到函数吗?

我需要将std::function传递给某个算法。函数的类型是typedefstd::functionCondition;在最简单的情况下,这个函数看起来像这样boolsimpleCondition(constdouble&d){returnd现在我想传递相同的条件,但只有当条件连续多次满足时,函数才应返回true。我尝试了以下classRepeatingCondition{public:staticConditiongetRepeatingCondition(Conditionc,intreps){returnstd::bind(&RepeatingCondition::evalCo

c++ - 在 C++ 中,我可以防止派生类被 friend 以外的类实例化吗?

在C++中,如果我有一个抽象基类,是否可以防止它的派生类被基类知道的friend以外的类实例化? 最佳答案 您可以将构造函数定义为私有(private)的,就像任何其他函数一样。例如:classfoo{friendfoo*FooConstructor(void);public:voidMethod();voidMethod2();private:foo();foo(const&foo);};foo*FooConstructor(void){returnnewfoo();}这可以防止以任何方式创建foo,使用FooContructor

c# - 我可以在没有 Visual Studio 的情况下编译 DLL 吗?

我打算拿aC++library,用SWIG为C#包装它(alt.link),并将C++和C#组件编译为Unity5的DLL。(C#DLL为Unity提供了到C++DLL的接口(interface)。)据我所知,编译C++和C#DLL总是需要VisualStudio(或VS附带的工具,如msbuild)。但是,我目前正在努力安装VS,这让我质疑这个假设。是否有任何其他选项可用于在Windows上编译支持Unity的DLL?(即使我安装了VS,我仍然很想知道。) 最佳答案 您可以下载MSBuild的独立版本并用它来编译你的代码,你不需要

c++ - 为什么我可以 std::move 流右值引用到左值引用?

据我了解C++11引用,我不应该能够将右值引用绑定(bind)到(非常量)左值引用,因为前者可能绑定(bind)到临时对象,而后者绝不能绑定(bind)到一个临时的。但是我发现这种奇怪的行为与临时流对象有关(我尽可能地减少了)structDummy{};templateStream&operatorvoidpass(Stream&&s){std::move(s)lvalueconversion?}#includeintmain(){pass(std::fstream("test",std::ios::out));}如果我写s在线(X),C++在(A)行提示,说error:invalid

c++ - 我可以在 C++ 中全局声明类对象吗?

classFoo{public:Foo(inta,intb);Foo();};Foofoo;intmain(){foo(1,3);}如果我使用全局类Foo,这是正确的做法吗?如果不是,请问哪种方法是正确的?注意:我想要全局类对象。 最佳答案 是的,您可以声明任何类型、类或非类的全局变量。不,您不能在函数内再次“调用”构造函数来初始化它。但是,您可以使用复制赋值运算符来执行此操作:Foofoo;intmain(){foo=Foo(1,3);}或者您可以使用“setter”函数来设置或重新初始化对象。顺便说一句,根据类中的数据,您可能想

c++ - 我可以从 ifstream/ofstream 获取使用的文件名吗?

我需要知道ifstream中是否存在一个方法,以便我可以获得与其关联的文件的名称。例如voidsome_function(ifstream&fin){//hereIneedgetnameoffile}ifstream/ofstream中是否有允许获取它的方法? 最佳答案 如前所述,std::fstream没有提供这样的方法。它是衍生物。此外,std::basic_filebuf不提供此类功能。为了简化,我在以下代码示例我建议您自己在一个小助手类中管理底层文件名:classMyFstream{public:MyFstream(cons

c++ - 我可以为 BlackBerry 制作 C++ 程序吗(示例?)

有谁知道我可以为黑莓平台编写C++程序吗?在一些旧视频中,他们声明3rd方应用程序只能用Java编写。这是真的。或者,如果您闪存设备,是否可以编写C++应用程序?如果有人有Blacberry的C++helloworld示例,请转发。/谢谢:-) 最佳答案 Blackberry有一个C++SDK,但仅适用于较旧的“三位数”型号(即957或更早版本)。要为现代BB设备编写代码,您必须使用JavaSDK。 关于c++-我可以为BlackBerry制作C++程序吗(示例?),我们在StackOv

c++ - 我可以将复制构造函数设为私有(private)并仍然使用默认实现吗

我认为这是不可能的,但我不妨问一下。我可以声明私有(private)Copy-Constructor并仍然使用默认实现吗?背景:我有一个包含非常大vector的类,除了一个成员函数外,我不想调用复制构造函数。使用标准的公共(public)复制器可能很容易导致错误,例如忘记迭代中的引用(foreach(Typeel,vectOfBigObjects)而不是foreach(Typeconst&el,vectOfBigObjects))。因此,我想保留标准的复制构造函数,但只是将其设为私有(private)。这是否可以在不重写copy-ctors定义的情况下实现?