使用前向声明而不是void * C ++

时间:2018-07-01 07:41:16

标签: c++ forward-declaration

是否可以使用前向声明代替 void * ,或者优先使用 typedef

我在API中使用特定类。对于使用它的客户端,该类由void*表示,因此客户端无需使用头文件。

这些选择中哪个更好?

class A;
class b
{
    A* simple;
};

typedef void* A;
class b
{
    A simple;
};

1 个答案:

答案 0 :(得分:2)

您绝对可以使用类似的内容:

class A;

class B {
    A* the_a;
}

代替

class B {
    void* the_a;
}

在您的C ++代码中,前者比后者更好。但是,除非确实需要,否则不要很快使用原始指针。

最后,我强烈建议您避免使用不会明确指出该类型属于指针的名称来进行类型定义的指针类型,因为这会造成混淆(且无用)。