假设我有以下头文件:
abc_header.h
class Abc
{
public:
int a;
int b;
int c;
};
typedef std::vector<Abc> AbcArray;
然后,如果要使用此类,则可以以这种方式声明使用此类的函数,而无需包括abc_header.h头文件:
client1.h
class Abc;
void useAbc(Abc &pObj);
仅在实现部分中将包含头文件。然后,我有了另一个将使用
AbcArray
类的函数,在这种情况下,似乎必须在函数声明部分中包含abc_header.h标头,如下所示:client2.h
#include "abc_header.h"
void useAbcArray(AbcArray &array);
有没有不包括头文件的可能性吗?谢谢。
最佳答案
只需在另一个标头abc_forward_header.h中具有前向声明Abc和(!)AbcArray:
class Abc;
typedef std::vector<Abc> AbcArray;