草庐IT

c++ - 嵌入式 C++ : Initialization of an array member of a struct within a class, 大小省略

您好,在此先感谢您对以下问题的任何帮助。编辑:我忘了补充一点,这是在无法访问STL功能的嵌入式系统上。我很抱歉遗漏了这条非常重要的信息。这是我第一次广泛使用C++进行编码,所以我忘了提及显而易见的事情。我回来补充这个事实,这个问题已经收到了一些回复。感谢大家这么快的回复!我正在尝试初始化结构的数组成员,该结构又是C++类的公共(public)成员。结构中省略了数组大小。这是一个例子://ClassA.hClassA{public:structStructA{StructBstructs[];};structStructB{//stuff};ClassA();//etc};//Class

c++结构定义-如何在其构造函数中定义具有单个参数的成员结构

简单的问题。我有一个结构,它有一个也是结构的成员。成员结构在构造时采用一个字符串参数。但是,在类定义中,编译器不允许从那里实例化它。IE。以下是不允许的:structStructName{stringstr;OtherStructother_struct("singlestringparam")};所以我试着不给它一个失败的参数,因为它必须接受一个:structStructName{stringstr;OtherStructother_struct;StructName(stringarg);};我是C/C++的新手,所以如果这是一个愚蠢的问题,我很抱歉。谢谢。

c++ - 在类方法内部访问类的命名空间之外?

我有一个正在使用的header资源,它定义了一个名为typedefstruct{...}Mii;现在,在我自己的程序中,我正在编写一个包装类,它在内部私下使用这个结构来进行它自己的操作,所以我将我的类放在我的程序的命名空间中以避免冲突。namespaceCMii{classMii{...voiddoSomething();};}现在,我可以通过CMii::Mii引用我的包装类。现在,在doSomething的实现中:voidCMii::Mii::doSomething(){Miim;...}编译器认为我指的是CMii::Mii。我如何告诉编译器我想使用该结构?

c++ - 这两行代码的区别和好处是什么?

我有两行代码需要解释一下。尽你所能告诉我。主要是每个的好处以及内存等幕后发生的事情。这里有两个结构体作为例子:structEmployee{std::stringfirstname,lastname;charmiddleInitial;DatehiringDate;//anotherstruct,notimportantforexampleshortdepartment;};structManager{Employeeemp;//manageremployeerecordlistgroup;//peoplemanaged};在上述结构中使用这两个更好,为什么?listgroup;lis

c++ - 指针和性能影响?

使用指针对性能有影响吗?避免使用指针是否更好?如果是,在什么情况下?显然,它们与引用文献一起有助于减少数据复制。我假设如果指向的数据类型很小,那么对指针的需求也较小。相反,通过指针传递大对象更好,因为指针的开销比复制对象的开销小。我还想知道参数/参数以外区域的指针?在此性能上下文中,引用通常比指针更好吗?我意识到我正在接近微优化的SO“肮脏”主题,但我正在编写一个非常注重延迟的应用程序。 最佳答案 我知道性能很重要,但语义更重要:快速和错误是没有用的。使用指针或引用具有语义含义,例如共享:voidfoo(A&a){a.a=1;if(

c++ - 是否可以生成参数包?

考虑以下伪代码:templatestructworker:unique::type...{};structx{};structy{};structz{};能不能写个模板unique这样它会生成一个参数包,该参数包仅包含T中的唯一类型。s,所以worker将直接派生自x,y,z分别按顺序给定Ts是非期末类(class)吗? 最佳答案 据我所知:不。问题是type是typedef的结果指令,和typedef不能别名包。这实际上很麻烦,而且大多数情况下,对包的计算需要引入包装类型(例如templatestructpack{};)才能传递它

c++ - 为什么某些局部类型声明在 C++ 中以 'struct' 为前缀

我经常看到这样的C++代码:voidfoo(){structsockaddr*from;//...}为什么需要struct说明符?它真的有作用吗?编译器已经可以知道sockaddr被声明为一个结构,所以我想知道为什么这是有用的或必要的。我过去曾尝试删除它,但没有注意到行为上的差异,但我不确定删除它是否安全。同样,这两者有什么区别?sizeof(structsockaddr)sizeof(sockaddr) 最佳答案 作为一种编码“风格”,这很可能是C的继承,其中关键字是必需的。在C++中,大多数情况下不需要这样做,尽管有时会使用它来

c++ - boost spirit qi on_error 通过引用传递 error_handler struct

我又遇到了灵气障碍问题。我在一个名为error_handler的仿函数结构中实现了错误处理。这通过引用传递给语法构造函数(参见Qi的MiniC示例)。然后我有on_errors在语法的构造函数中定义:typedefboost::phoenix::function>error_handler_function;on_error(gr_instruction,error_handler_function(err_handler)(L"Error:Expecting",_4,_3));//moreon_errors...但是,我的error_handler有私有(private)成员。好像每

c++ - 通过结构指针将结构的成员初始化为零

typedefstruct{doublefirstArray[3];doublesecondArray[4][4];boolthirdArray[2];}myStruct;我知道我们可以使用intmyArray[10]={0};在一行中将数​​组的所有值初始化为零我有一个函数可以将myStruct中数组的所有元素初始化为零和false(对于bool)。voidinitializeElementsOfStruct(myStruct*str){str->firstArray[0]=0.0;str->firstArray[1]=0.0;str->firstArray[2]=0.0;...}除

使用结构变量时出现 C++ 错误

我有这个结构:structnoduri{intnod[100];};还有这个函数:intclearMatrix(intvar){cout我希望将结构分配给数组all[]的所有100个元素,当我做cout一切正常,没有错误,它输出0.当我调用clearMatrix(1)我收到此错误:error:requestformembernodinall[1],whichisofnon-classtypeint,我做错了什么?! 最佳答案 数组变量all是main函数的局部变量,因此您不能在clearMatrix中引用它,除非您将指向它的指针传递