有些人可能会发现这个问题很奇怪,但我会继续。
我有一个名为Cxx的课程。
我从C移植了一些东西并且没有太多C ++经验:我正在学习。 但基本上,通常在C中我有一个结构:
typedef
struct cdata_s {
int k;
float g;
char *z;
}
cdata_t;
我想将这些结构的数组传递给我的构造函数,例如
Cxx k(array_of_cdata, cdata_array_size);
我也可以
Cxx k(array_of_k, array_of_g, array_of_z, size); // i.e. no more structure, pass each member in array
我不知道是否所有这些都是好的C ++。毕竟,在第一种方法中我使用结构:结构只在C ++中用于C兼容性吗?这不是真正的C ++吗?
第二种方法很难看。
这样做有什么好的C ++方式?
谢谢!
答案 0 :(得分:4)
不,structs
在C ++中具有实际意义。 structs
和classes
之间的唯一区别是structs
的所有成员都具有默认的公共访问说明符。所以你的第一种方法很好,尽管使用vector
更方便和惯用。而且,摆脱类似C的结构声明。
struct cdata_s { //this is fine
int k;
float g;
char *z;
}
Cxx k(vector<cdata_s> &vcs);
答案 1 :(得分:0)
使用结构很好。我唯一的建议是切换到向量而不是数组,因为它们可以改变它们的大小,并跟踪它们自己的大小。
答案 2 :(得分:0)
你所要求的是standard containers 。这些以不同的方式存储您的数据,vector&lt; - &gt;数组,列表&lt; - &gt;它们为你做了所有无聊的事情,比如跟踪有多少,分配,当阵列超出范围时清理等等。