C ++方式传递结构化的东西?

时间:2014-03-07 02:10:00

标签: c++ oop

有些人可能会发现这个问题很奇怪,但我会继续。

我有一个名为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 ++方式?

谢谢!

3 个答案:

答案 0 :(得分:4)

不,structs在C ++中具有实际意义。 structsclasses之间的唯一区别是structs的所有成员都具有默认的公共访问说明符。所以你的第一种方法很好,尽管使用vector更方便和惯用。而且,摆脱类似C的结构声明。

struct cdata_s { //this is fine
    int k;
    float g;
    char *z;
}

Cxx k(vector<cdata_s> &vcs);

答案 1 :(得分:0)

使用结构很好。我唯一的建议是切换到向量而不是数组,因为它们可以改变它们的大小,并跟踪它们自己的大小。

http://www.cplusplus.com/reference/vector/vector/

答案 2 :(得分:0)

你所要求的是standard containers 。这些以不同的方式存储您的数据,vector&lt; - &gt;数组,列表&lt; - &gt;它们为你做了所有无聊的事情,比如跟踪有多少,分配,当阵列超出范围时清理等等。

相关问题