草庐IT

c++ - 制作成员函数,一个类的 friend

我一直在尝试编写代码来实现一个成员函数,该成员函数可以通过将其声明为类中的友元来访问类的私有(private)数据。但是我的代码失败了,我似乎无法弄清楚它有什么问题:#includeusingnamespacestd;classA;classB{private:intb;//ThisistobeaccessedbymemberfunctionofApublic:friendvoidA::accessB();};classA{private:inta;public:voidaccessB();};voidA::accessB(){By;y.b=100;cout我正在尝试使用getAcce

c++ - 处理类和类的模板函数*

下面的代码允许我模板化一个函数接受一个参数,该参数是指向Box对象的三种不同指针类型之一的vector:conststd::vector>&conststd::vector>&conststd::vector&有没有办法扩展它以支持:constvector&constvector>也许有一些boost?#include#includeclassBox{public:Box(unsignedintid,unsignedintside):id(id),side(side){}intvolume(){returnside*side*side;}unsignedintid;unsignedin

c++ - 从 const 指针创建用户类的 const 对象

是否可以强制编译器在我的类中传播常量限定符,以便为构造函数提供常量指针?考虑以下代码:structT{T(int*a,int*b):a(a),b(b){}int*a;int*b;};inta=1,b=2;constint*aRef=&a;constint*bRef=&b;constTobj(aRef,bRef);//error这显然是不允许的,因为构造函数接受int*,而不是constint*。有什么方法可以达到同样的效果,如果不打算修改const对象中的a和b处的数据类T?编辑下面是一个更接近实际问题的稍微复杂的例子。想象一下,我按顺序传递了一些大型int[]数组(例如,连续1000

c++ - libusb callback_in 函数作为 C++ 中类的成员

当作为C++类的成员调用时,我在libusb_fill_bulk_transfer中定义和使用回调函数时遇到问题。这是类中的定义:namespaceusb_connector{classUSBConnector{public:USBConnector();~USBConnector();intconnect(void);voidread(void);voidwrite(unsignedchar*);voiddisconnect(void);voidLIBUSB_CALLcallback_in(structlibusb_transfer*);...下面是类中的实现:voidLIBUSB_

c++ - 正确的完全特化模板类的前向声明

假设我有以下一堆文件:Generic.h:复杂的模板类#pragmaoncetemplatetypenameC>structGenericMap{Ckey;};Special.h:定义上述模板类的完全专用版本,简化易用性。#pragmaonce#include"Generic.h"#include#includetypedefGenericMapSpecialMap;Client.h:使用SpecialMap并定义前向声明的客户端。#pragmaonceclassSpecialMap;//WrongforwarddeclarationstructClient{Client();Spec

c++ - 从gdb中模板类的成员函数打印静态变量

我有一个简单的模板类:namespacetest{template>classDB{public:staticDB&instance(){staticDB_instance;return_instance;}private:DB(){};DB(DBconst&){};voidoperator=(DBconst&){};Container_db_internal;};}当我在gdb中调试时,我想查看_db_internal容器,但不知道如何访问它。我试着用gdb写:p'test::DB>::instance()::_instance'._db_internal它给了我:Nosymbol.

C++ 使用来自类似虚拟公共(public)类的成员函数

假设我有一堆这样的继承类:...它们都用于生成各种多项式。类X主要是一个变量tank,类A、B等都是virtualpublicX,各自创建ont类型的多项式,类Y进行调用。除了A和B之外,还可以添加任何其他类。现在,除了新添加的“虚拟公共(public)”类之外,一切正常,我需要重用其他类的一些成员函数,这里来自A类B。我试着做一个最简单的例子:#include#include#include//variabletankclassX{protected://generalvariablesdouble*m_c;intm_n;doublem_w;//funcXrelateddoublem

c++ - 保留超出范围的类的数据?

我正在使用外部库中的“foo”类,该类计算并存储大量数据。完成计算后,我只想保留结果数据的数组,它大约占“foo”大小的一半。Foo使用函数RawResultsArray()提供指向结果数据的指针。使用类型IDPNSt3__17complexIdEE.到目前为止,我一直在这样做:intN;//lengthoftheresultsarraycomplex*results_to_keep;{foomyFoo;myFoo.findResults();results_to_keep=newcomplex[N];for(autoi=0;i然而,我的工作内存有限,负担不起results_to_ke

c++ - 在模板类中定义的枚举上嵌套类的部分特化

请看下面的代码:templatestructX{enumclassE{e0};templatestructY{};templatestructY{staticintf(){return0;}};};intmain(){X::Y::E::e0>::f();}VC++15.7.5生成错误消息:1>test.cpp1>some_directory\test.cpp(15):errorC2039:'f':isnotamemberof'X::Y::E::e0>'1>some_directory\test.cpp(15):note:seedeclarationof'X::Y::E::e0>'1>s

c++ - 如何在 C++ 的另一个模板函数中使用属于模板类的嵌套类型?

我正在设置一个根据元组类型和仿函数结构初始化元组的函数For有一个size_t模板参数INDEX保留编译时索引。这个仿函数也可能依赖于其他模板参数T....因此,仿函数存在于保存这些模板参数的其他结构中(本例中为TClass)。初始化函数(这里称为Bar)有一个templateclass模板参数以确保使用的类实际上可以存储索引。虽然我提出的设计在我从非模板函数调用它时工作正常,但如果模板T2则它不会编译。一个函数确实决定了包装器的模板参数TClass.这里是仿函数For的定义包在里面TClass:#includetemplatestructTClass{templatestructFo