包括类作为struct的成员

时间:2011-02-09 12:29:17

标签: c++ c oop

我必须在c结构中添加一个类对象作为成员。

是否有禁止这样做的禁令。

此致 iSight的

4 个答案:

答案 0 :(得分:4)

我假设你在谈论C ++,因为C中没有“类”的概念 - 尽管你当然可以将struct作为另一个struct的成员。 / p>

除了一个不重要的细节,classstruct是相同的,两者通常被称为“类类型”。您可以使用class执行任何操作(例如拥有类类型的成员),也可以使用struct

如果您感兴趣,唯一的区别是成员和基类的默认可访问性; publicstructprivateclass

答案 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”的内容,那么您可能很安全。