我必须在c结构中添加一个类对象作为成员。
是否有禁止这样做的禁令。
此致 iSight的
答案 0 :(得分:4)
我假设你在谈论C ++,因为C中没有“类”的概念 - 尽管你当然可以将struct
作为另一个struct
的成员。 / p>
除了一个不重要的细节,class
和struct
是相同的,两者通常被称为“类类型”。您可以使用class
执行任何操作(例如拥有类类型的成员),也可以使用struct
。
如果您感兴趣,唯一的区别是成员和基类的默认可访问性; public
为struct
,private
为class
。
答案 1 :(得分:1)
你可以在C中拥有一个C ++类成员,但是从C的角度来看它需要被视为void*
,所以C可以很好地处理它。
此技术称为Opaque Pointer。
答案 2 :(得分:0)
不,没有。看看这个例子:
#include<iostream>
class Foo {
public:
Foo() {
this->i = 1;
}
int i;
};
struct Bar {
Foo foo;
};
int main() {
struct Bar bar;
std::cout << bar.foo.i << std::endl;
return 0;
}
答案 3 :(得分:0)
只要结构只是在C ++代码中使用,就没有问题。但是,如果将结构传递给C代码,可能会发生不好的事情(释放/删除struct时不会调用析构函数。)
如果您在声明文件中没有看到类似extern“C”的内容,那么您可能很安全。