【发布时间】:2014-04-18 22:48:57
【问题描述】:
我想要在 c/c++ 中类似这样的概念
struct first{
int a,b,c;
}my1;
struct second{
int a,b,c;
int extended;
}my2;
并且以某种方式能够拥有
my2=my1;
(意味着只复制相同的部分。保持扩展不变)
我想解决这个问题
struct second{
first first_;
int extended;
}my2;
并且拥有
my2.first_ = my1;
但这对我来说有点难看。有没有更明确的解决方案? 可能是扩展结构之类的东西?
【问题讨论】:
-
C 或 C++,还是两者的公共子集?
-
您必须以某种方式指定要分配给的事物,以及要修改的事物的一部分。因此,您的解决方案尽可能简洁。 (“_”确实很丑,但你可以选择一个不同的名字来解决这个问题)。
-
如果你想用 C++ 来做,那就拿起你的 C++ 书,阅读有关复制构造函数和赋值运算符的内容。
-
我对 C 更感兴趣,因为我想稍后为 cuda 程序复制分配给这些的记忆。我很害怕 c++ 可能会引入额外的内存开销,这可能不会被困在移动数据中。(只是想)我也看到了这个stackoverflow.com/questions/2807138/…,它给出了类似的答案来使用 struct second: public first{ int extended};但我仍然不能做 my2=my1
-
将问题更新为仅关于 C 的问题