Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用前向声明而不是空隙*C++_C++_Forward Declaration - Fatal编程技术网

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

使用前向声明而不是空隙*C++,c++,forward-declaration,C++,Forward Declaration,是否可以使用转发声明而不是void*或首选使用typedef 我在API中使用特定的类。对于使用它的客户机,该类由void*表示,因此客户机不需要使用头文件 这些选择中哪一个更好 class A; class b { A* simple; }; 或 您完全可以使用以下内容: class A; class B { A* the_a; } 而不是 class B { void* the_a; } 你的C++代码,前者比后者好。但是,除非您真的需要,否则不要快速使用原始

是否可以使用转发声明而不是void*或首选使用typedef

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

这些选择中哪一个更好

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


您完全可以使用以下内容:

class A;

class B {
    A* the_a;
}
而不是

class B {
    void* the_a;
}
<>你的C++代码,前者比后者好。但是,除非您真的需要,否则不要快速使用原始指针


最后,我强烈建议您避免使用名称来定义指针类型,因为名称不能清楚地表明类型是指针类型,因为这很容易混淆,也没有什么用处。

这是三个完全不同的东西……在哪里使用它们?C++不是一种适合所有语言的方法。我真的不知道它们是如何相互关联的。“我想我至少知道这两种语言之间有什么联系。”RaKe1111:看我的答案。“纳德:是的,这是非常错误的,因为A不是指针。这个typedef会非常混乱。还有,虽然我知道你在问什么,但也不是很清楚,这就是为什么你得到了所有的票数。@纳德,我不会把任何Windows头文件作为最聪明的来源,而最好的是用先进的C++ Linux系统头,而不是BTW。这些都是C-API定义。@纳德:这告诉你一些Windows的代码质量,然后……EINPOLKUM,至少部分地是一个神话。这是一个C OS API。有很多事情是经过深思熟虑的,只是为了满足他们对向后兼容aso的需求。
class B {
    void* the_a;
}