草庐IT

c++ - 前向声明、unique_ptr 和类内初始化器

我已阅读Isstd::unique_ptrrequiredtoknowthefulldefinitionofT?和Forwarddeclarationwithunique_ptr?,但我的问题更具体。以下编译://Compilewith$g++-std=c++11-c#includeclassA;//fwddeclarationclassAUser{AUser();//definedelsewhere~AUser();//definedelsewherestd::unique_ptrm_a;};以下不是://Compilewith$g++-std=c++11-c#includeclas

C++ 函数指针作为参数和类?

嗯,我正在阅读一些关于此的指南,但我无法弄清楚,我如何在C++中正确使用函数指针?我有一个类,我想在它完成当前正在做的任何事情后调用一个函数,如下所示:classWindowImages{public:voidUpdate(){for(unsignedinti=0;iMyFunctionPointer();}}voidAdd(Image*image,void(*func)(void)){image->function=func;//thisiswrong_images.push_back(image);}private:vector_images;}classImage{public:

C++11 将 shared_ptr 转换为 vector 和类

我正在尝试将转换应用到shared_ptr并存储到shared_ptr,同时还在类中使用函数。我创建了这个例子:#include#include#include#includeusingnamespacestd;classMyClass{public:intfactor=0;MyClass(constintfactor_):factor(factor_){}shared_ptr>mult(shared_ptr>numbers){shared_ptr>result(newvector());transform(numbers->begin(),numbers->end(),result-

c++ - 帮助我理解 C++ 头文件和类

好的,所以我正在尝试从中级Delphi过渡到C++面向对象编程。我读过IvarHorton关于VisualC++2010的书。我可以毫无问题地完成简单的控制台应用程序。我得到了语言本身(有点)。我苦苦挣扎的地方是标题和类(class)。我也了解头文件和类的一般作用。我没有得到的是什么时候使用标题或类的实现?我需要为我所做的一切创建类吗?我的实际工作函数需要在头文件中还是在CPP文件中?我迷失了如何正确使用它们,可以使用来自更有经验的程序员的一些现实世界指导。如果有帮助,我正在尝试使用MFC过渡到Windows应用程序。 最佳答案 I

c++ - 对于 C++ Vector3 实用程序类实现,数组是否比结构和类快?

出于好奇,我以3种方式实现了vector3实用程序:数组(使用typedef)、类和结构这是数组实现:typedeffloatnewVector3[3];namespacevec3{voidadd(constnewVector3&first,constnewVector3&second,newVector3&out_newVector3);voidsubtract(constnewVector3&first,constnewVector3&second,newVector3&out_newVector3);voiddot(constnewVector3&first,constnewVe

c++ - 结构和类以及继承 (c++)

如果struct中的所有访问说明符(包括继承)都是public,你能向我保证吗?换句话说:它们相等吗?classC:publicB,publicA{public:C():A(1),B(2){}//...};和structC:B,A{C():A(1),B(2){}//...}; 最佳答案 是的,它们都是公开的。structA:B{Cc;voidfoo()const{}}相当于structA:publicB{public:Cc;voidfoo()const{}}对于成员,在§11中指定:Membersofaclassdefinedwit

C++:extern "C"和类成员之间的命名空间冲突

我偶然发现了一个相当奇特的c++命名空间问题:浓缩示例:extern"C"{voidsolve(lprec*lp);}classA{public:lprec*lp;voidsolve(intfoo);}voidA::solve(intfoo){solve(lp);}我想在我的C++成员函数A::solve中调用c函数solve。编译器对我的意图不满意:errorC2664:'lp_solve_ilp::solve':cannotconvertparameter1from'lprec*'to'int'我可以在solve函数前加前缀吗?C::solve不起作用

具有类键和类值的 C++ STL 映射容器

假设我有这样一个类:classPoint{private:intx,y;public:voidsetX(intarg_x){x=arg_x;}voidsety(intarg_y){y=arg_y;}intgetX()const{returnx;}intgety()const{returny;}};现在我想要一张这样的map:mapm;但是我需要第三个参数。我在cplusplus里读到这第三个参数是用来比较什么的,但是没看懂那是什么东西。谁能给我解释一下? 最佳答案 如果您不需要单独的比较函数,您可以使用这样的方法扩展您的类class

c++ - 我可以在编译和链接时将 C++ 主函数和类与 Objective-C 和/或 C 例程分开吗?

我有一个小型C++应用程序,我导入了Objective-C类。它作为Objective-C++文件.mm工作,但任何包含header的C++文件可能最终包含一些Objective-Cheader,必须重命名为.mm扩展名以用于正确的GCC驱动程序。有没有办法为Objective-C类编写一个纯C++包装器,或者我能否以某种方式将Objective-C对象分离出来,然后单独链接它们?也许即使Objective-C类成为一个小库,我也可以在编译时静态重新链接?问题在于这段代码是跨平台的,在通常不使用Objective-C的系统(即非Mac)上编译起来比较困难。尽管预处理器命令限制了Obje

C++初阶:入门泛型编程(函数模板和类模板)

大致介绍了一下C/C++内存管理、new与delete后:C++初阶:C/C++内存管理、new与delete详解我们接下来终于进入了模版的学习了,今天就先来入门泛型编程文章目录1.泛型编程2.函数模版2.1概念2.2格式2.3函数模版的原理2.4函数模版的实例化2.4.1隐式实例化2.4.2显示实例化2.5模板参数的匹配原则3.类模板3.1概念3.2格式3.3类模板的实例化1.泛型编程**泛型编程是一种编程范式,旨在编写可以适用于多种数据类型的通用代码。通过泛型编程,我们可以编写一次代码,然后将其应用于不同的数据类型,从而避免重复编写相似的代码**之前我们面对多种类型只能这样干:intSwa