草庐IT

C++ 在 ‘value_type’ 中没有名为 ‘struct std::iterator_traits<int>' 的类型

你好。我正在尝试运行以下代码(仅用于培训目的):#include#includetemplate>classkont>typenamestd::iterator_traits::value_typefoo_test(typenamekont::iteratorb){return*b;}templatetypenamestd::iterator_traits::value_typeminimum(Iterb,Itere){Iterm=b;/*CODE*/return*m;}intmain(void){std::listx;x.push_back(10);x.push_back(100);

c++ - 我可以将 BOOST_FUSION_ADAPT_STRUCT 与继承的东西一起使用吗?

假设我有structcat{inttail;inthead;};structbird{intwing;intbursa;};如果我这样做...structwat:publiccat,publicbird{};BOOST_FUSION_ADAPT_STRUCT(cat,tail,head)BOOST_FUSION_ADAPT_STRUCT(bird,wing,bursa)BOOST_FUSION_ADAPT_STRUCT(wat,wat::cat,wat::bird)...我无法获得构建,但如果我像下面这样显式引用继承的对象,它是完全有效的。#include#includenamespa

c++ - boost::interprocess : cout a string variable when iterating through a map that references an object from a struct

我正在使用boost::interprocess在进程之间共享对象。我有两个文件,一个生成结构对象并将该对象传递到具有int索引的映射中的“server.cpp”;和一个“client.cpp”文件,它检索内存数据并遍历数据,输出到控制台。结构看起来像这样:structmydatao{stringMY_STRING;intMY_INT;};和对象:mydatao;o.MY_STRING="hello";o.MY_INT=45;服务器和客户端都能正确编译。但是出于某种原因,如果我尝试访问客户端中的字符串而不是float或整数,客户端可执行文件会抛出段错误。例如下面的second.MY_I

c++ - 2 成员结构是否可以安全地替代位压缩 int?

我有一些现有的C++代码可以通过网络发送和接收uint32_t数组。由于我的协议(protocol)发生了变化,我想用一对两个uint16_t替换这个数组中的每个条目,如果可能的话,我想这样做而不改变我发送的位数网络。将两个uint16_t值组合成单个32位宽值的一种明显方法是将低级位打包到uint32_t中,并保持数组定义不变.所以发件人的代码看起来像这样:uint32_titems[ARR_SIZE];for(std::size_ti=0;i(static_cast(field2)(field1));}接收方的代码如下所示://receiveitemsfor(std::size_t

具有不同成员的 C++ 结构 - 在运行时决定

我有以下情况。下面附上伪代码。我有一个A类,它有一个D或E类型的对象c,这会有所不同(实际上是随机决定的)。它使用b作为与远程计算机通信的消息。那么,我应该如何让结构B具有不同的变量(在本例中为float或double)?另外,当我打开一个套接字并传输一个对象时,该对象现在将具有不同的大小。远程计算机不知道对象的大小是否对应于sizeof(int)+sizeof(float)或sizeof(int)+sizeof(double)。我需要将大小作为参数来接收数据包,那么我该如何解决呢?代码:classC{...};classD:publicC{...};classE:publicC{..

C++ CRTP 类层次结构

来自Wikipedia://TheCuriouslyRecurringTemplatePattern(CRTP)templatestructbase{//...};structderived:base{//...};现在如果我想要derived_from_derived,我可以写://TheCuriouslyRecurringTemplatePattern(CRTP)templatestructbase{//...};templatestructderived:base{//...};structderived_from_derived:derived{//...};现在假设我只想要一

c++ - 通过++ 和 -- 运算符更改 C++ 中结构的地址

是否可以使用--或++运算符更改我当前结构的地址,即:mystruct*test=existing_mystruct;test++//insteadofusing:test=test->next_p;我试图使用它,但它似乎是const并给了我一个错误:分配给这个(不合时宜):structmystruct{mystruct*next_p;mystruct*prev_p;voidoperatorplusplus(){this=next_p;}voidoperatorminusminus(){this=prev_p;}}; 最佳答案 对象

异常情况下的 C++ 错误 C2228( '.val' 左侧必须有类/结构/union )

在C++中,我正在尝试实现自己的any使用C++的类。然而,在我能够对其进行测试之前(如果我的实现不好,请随时纠正我),我得到了错误:errorC2228:leftof'.val'musthaveclass/struct/union使用value()两次功能两次,当它在其他地方工作时,这看起来很奇怪。我唯一能想到的就是decltype函数前面导致错误,但它不应该:编辑:我更新了为templateany(TV){...}更改变量的方式构造函数classany{protected:templatestructvariable{public:Tval;variable(){}variable

c++ - 在 C++ 中嵌套在模板中的类中使用基类的成员时出错

考虑以下示例:templatestructA{structB{intb;};structC:B{voidf(){b=0;}};};用GCC4.8.1编译它会出现以下错误:test.cc:Inmemberfunction‘voidA::C::f()’:test.cc:9:11:error:‘b’wasnotdeclaredinthisscopeb=0;^但是,b是父类B的成员(我在示例中使用了struct来公开所有内容)并且如果我使A非模板一切编译。为什么编译器会报错,我该如何避免? 最佳答案 这在语言中是一种晦涩的极端情况,但解决方

c++ - 用位域打包 bools (C++)

我正在尝试使用C++与Ada代码进行交互,因此我正在使用位字段定义一个结构,以便所有数据在两种语言中都位于同一位置。以下内容不完全是我在做什么,但概述了问题。以下也是VS2008中的控制台应用程序,但这不是特别相关。usingnamespaceSystem;intmain(){intarray1[2]={0,0};int*array2=newint[2]();array2[0]=0;array2[1]=0;#pragmapack(1)structtestStruct{//Word0(desired)unsigneda:8;unsignedb:1;boolc:1;unsignedd:21