jjzjj

CMyClass

全部标签

c++ - 根据大小自动按值或按引用传递类

我有这个类,我想将其作为LPARAM参数传递给Windows。因为它足够小,可以放在LPARAM中,所以我想按值传递它,但如果它稍后扩展,我希望它自动切换到按引用传递。我会用类似的东西typedefboost::call_traits::param_typeCMyClassParam;应该是constCMyClass或constCMyClass&取决于是否sizeof(CMyClass)但是call_traits只优化小的POD,而不是小的类。typedef由Anycorn的建议处理:typedefboost::mpl::if_c::typeCMyClassParam;然后,我如何在C

c++ - 在匿名命名空间中定义 QObject 派生类?

我正在使用Qt5.7(C++)。在一个类的cpp文件中,我使用匿名命名空间来创建一个我将仅在该文件中使用的类(一些实用程序)。但是,如果实用程序类派生自Qt类,我会遇到链接错误。我认为问题出在Q_OBJECT宏上,如果我不添加它,我就不会收到错误。但是在任何Qt派生类中都必须/推荐使用Q_OBJECT宏。我怎样才能避免这个问题?是否有任何其他方法来获得具有文件范围的实用程序类?显示错误的简单示例:类CMyClass使用派生自QWidget的实用程序类(名为CUtility)。谢谢。CMyClass.hclassCMyClass{public:CMyClass();voidsomeMet

c++ - 如何在不传递类实例的情况下从静态成员函数调用非静态成员函数

我需要从同一个类的静态成员函数调用非静态成员函数。静态函数是一个回调。它只能接收void作为数据,尽管我传递了一个char*。所以我不能直接向回调提供类实例。我可以将结构而不是char传递给回调函数。谁能给出在静态成员函数中使用非静态成员函数的代码。并使用静态成员函数中的结构体来调用类的实例来调用非静态成员函数? 最佳答案 通常这样的回调看起来像这样:voidCallback(void*data){CMyClass*myClassInstance=static_cast(data);myClassInstance->MyInstan

c++ - 成员函数中的类实例化

在该类的成员函数中实例化一个类是否安全?例如,假设我有一个带有成员函数CMyClass::MemberFunc的类CMyClass,我想在CMyClass中创建另一个实例CMyClass::MemberFunc。voidCMyClass::MemberFunc(void){CMyClass*pMyClass=newCMyClass();}这合法/安全吗?我知道它编译。我关心的是递归。当我第一次从主应用程序实例化CMyClass时会遇到递归错误吗?voidmain(void){staticCMyClass*s_pMyClass=newCMyClass();//Willthiscauser

c++ - x64 free 性能低下

我有一个这样的类(假设所有malloc都成功)classCMyClass{public:CMyClass(){lpData=malloc(128);};~CMyClass(){free(lpData);};public:LPVOIDlpData;};然后我执行这个:CMyClass*lpList=newCMyClass[32768];delete[]lpList;问题在于,在x86中,代码运行良好且快速(在调试和发布版本中完成几毫秒),但在x64中,删除调用需要大约15秒来释放所有内存。操作系统是Win7x64。将不胜感激。问候,毛罗。 最佳答案

c++ - static_cast 可以将非空指针转换为空指针吗?

我需要为回调函数编写代码(它将在ATL中调用,但这并不重要):HRESULTcallback(void*myObjectVoid){if(myObjectVoid==0){returnE_POINTER;}CMyClass*myObject=static_cast(myObjectVoid);returnmyObject->CallMethod();}这里的void*保证是指向CMyClass的指针,所以static_cast是合法的。我关心的是代码必须尽可能可移植(至少对于较新版本的VisualC++)。所以super偏执狂我也倾向于检查CMyClass*指针-我的意思是如果结果为空

c++ - 构造函数可以返回 NULL 值吗?

我知道构造函数不会“返回”任何东西,例如如果我调用CMyClass*object=newCMyClass()如果构造函数失败,有什么方法可以使object为NULL?就我而言,我有一些必须加载的图像,如果文件读取失败,我希望它返回null。有什么办法吗?提前致谢。 最佳答案 我同意其他人的观点,你应该使用异常,但是如果你真的需要使用NULL出于某种原因,请将构造函数设为私有(private)并使用工厂方法:staticCMyClass*CMyClass::create();这意味着你不能正常构造实例,你不能再在堆栈上分配它们,这是一

c++ - 构造函数可以返回 NULL 值吗?

我知道构造函数不会“返回”任何东西,例如如果我调用CMyClass*object=newCMyClass()如果构造函数失败,有什么方法可以使object为NULL?就我而言,我有一些必须加载的图像,如果文件读取失败,我希望它返回null。有什么办法吗?提前致谢。 最佳答案 我同意其他人的观点,你应该使用异常,但是如果你真的需要使用NULL出于某种原因,请将构造函数设为私有(private)并使用工厂方法:staticCMyClass*CMyClass::create();这意味着你不能正常构造实例,你不能再在堆栈上分配它们,这是一