草庐IT

c++ - Bluegene 系统是否支持 ltdl 或任何其他类型的 dlopen() 支持?

所以我有一些使用dlopen加载库的代码,我希望它在bluegene系统上工作,但我没有bluegene来测试东西,我已经从未直接与任何人合作过。bluegene是支持ltdl.h,还是用别的东西?如果是,它有什么用? 最佳答案 BlueGene/L不支持库的动态链接或加载。这在redbook中有解释。在第5章中。AlthoughBlueGene/LusestheIBMXLcompilers,therearedifferenceswithrespecttoallotherIBMservers.Inparticular,intheca

c++ - 如何在运行时更改现有 QGLWidget 的 QGLFormat?

在我的应用程序中,用户可以更改OpenGL格式的属性(即双缓冲、多重采样、各种缓冲区的深度......)。目前,我的应用程序中只有一个QGLWidget,如果用户更改任何内容,我会销毁并重新创建该小部件。现在,我想要不止一个小部件。因此,如果格式发生变化,我需要销毁/重新创建所有小部件。由于小部件可以采用各种配置,因此很难销毁/重新创建它们。那么有没有办法在运行时改变QGLWidget的格式呢?或者,有没有办法用另一个替换一个小部件?(即销毁一个小部件并将一个新的小部件放在它原来站立的地方) 最佳答案 这可能有效:QGLFormat

C++动态加载类

我对C++还是有点陌生​​,所以请原谅我的笨拙。我想要的是能够让我的程序的用户能够添加他自己的类。我有一个抽象类Module,我的应用程序由一组Module的子类组成。是否可以搜索特定目录并动态加载Module的子类(由用户添加)?在Java中,我可以使用org.reflectionsAPI实现这一点。我猜C++等价物正在使用DLL。我可能是错的。提前致谢。 最佳答案 据我所知,C++编译模型没有明确、直接的“导出类”方式。但是,您应该能够使用简单的C接口(interface)来完成此操作:#include"MyModule.h"/

C++ 运行时动态内存大小

这是我一直想知道但从未找到答案的问题:为什么当您在堆上分配某些东西时,您无法仅通过指针确定它的大小,但您可以仅使用指针删除它,而且C++不知何故知道要释放多少字节?这和它在堆上的存储方式有关系吗?此信息是否存在但未被C++公开?也许这应该是一个单独的问题,但我认为它非常相关,所以我会在这里问:为什么必须使用delete[]删除动态元素数组,而不是简单的delete命令;为什么C++需要这些附加信息才能正确释放所有内存? 最佳答案 当进行分配时,紧接在[或者,技术上,在完全不同的地方,但在最常见的情况下]之前的一小段内存将存储分配的大

c++ - 异常错误 : Access violation reading location 0xDDDDDDDD

我正在尝试用C++创建一个动态字符串数组。当尝试将我的动态字符串数组的内容显示到控制台时,我收到此错误:Exceptionthrownat0x0FD670B6(msvcp140d.dll)inAssignment4.exe:0xC0000005:Accessviolationreadinglocation0xDDDDDDDD.这是我的代码:DynamicStringArray.h#pragmaonce#include"stdafx.h"#include#includeusingnamespacestd;classDynamicStringArray{public:DynamicStri

c++ - dynamic_cast 真的适用于多重继承吗?

我想看看是否可以创建“接口(interface)”,继承它们,然后在运行时检查是否有任何随机类实现了该接口(interface)。这是我的:structGameObject{intx,y;std::stringname;virtualvoidblah(){};};structAirholder{intoxygen;intnitrogen;};structTurf:publicGameObject,publicAirholder{Turf():GameObject(){name="Turf";}voidblah(){};};voidremove_air(GameObject*o){Air

C++11 Dynamic Cast If Else Chain -> 开关

考虑以下几点:structB{};templatestructD:B{Tt;}voidg(inti){...}voidg(strings){...}voidg(charc){...}voidf(B*b){if(dynamic_cast*>(b)){g(dynamic_cast*>(b)->t);}elseif(dynamic_cast*>(b)){g(dynamic_cast*>(b)->t);}elseif(dynamic_cast*>(b)){g(dynamic_cast*>(c)->t)}elsethrowerror;};这里只有三种可能的T类型——int、string、char

c++ - 有 "dynamic decltype"吗?

这个问题与decltype和多重继承有关。假设我有以下内容:一个带有一些虚拟方法的抽象类A,一些派生类使用以前的虚拟方法实现方法(这些类中的每一个都是一种用例),一个最终的具体类,它继承了先前用例的子集并实现了纯虚拟方法。例如:#include/***"Iterablecontainer"*/templatestructA{virtualT*data()=0;virtualconstT*data()const=0;virtualunsignedsize()const=0;T*begin(){returndata();}T*end(){returndata()+size();}const

c++ - 如何使用 dynamic_cast 正确向下转换?

我对dynamic_cast很困惑.来自C++Primer和cppreference的Material(规则5)不能帮助我理解。(cppreference比书难得多,我都非常仔细地阅读了它们)来自C++Primer5th:dynamic_cast(e)Inallcases,thetypeofemustbeeitheraclasstypethatispubliclyderivedfromthetargettype,apublicbaseclassofthetargettype,orthesameasthetargettype.Ifehasoneofthesetypes,thentheca

c++ - 汇编代码的数据结构? [研究]

我打算创建一个优化的数据结构来保存汇编代码。这样我就可以完全负责将在这个结构上工作的优化算法。如果我可以边运行边编译。这将是一种动态执行。这可能吗?有没有人见过这样的事情?我应该使用结构将结构链接到程序流中吗?对象更好吗?structasm_code{inttype;intvalue;intoptimized;asm_code*next_to_execute;}asm_imp;更新:我想它会变成一个链表。更新:我知道还有其他编译器。但这是军方的绝密项目。所以我们不能相信任何代码。我们必须自己做这一切。更新:好的,我想我会生成基本的i386机器代码。但是当它完成时我如何跳入我的内存blo