我想使用第 3 方库而不使用其头文件。我的代码位于它自己的命名空间中,因此我不能使用常规的前向声明,因为我不想污染全局命名空间。目前我有这样的事情:
3rd-party-library.h----
typedef struct {...} LibData;
void lib_func (LibData *);
my-source.h-----
namespace foo {
/*forward declaration of LibData*/
class Abcd {
public:
void ghj();
private:
Libdata *data_;
};
}//namespace foo
my-source.cpp-----
#include "my-source.h"
#include <3rd-party-library.h>
namespace foo {
typedef ::LibData LibData;
void Abcd::ghj() {
//do smth with data_
}
}//namespace foo
是否可以以驻留在命名空间中的方式转发声明全局类型?简单的 typedef 不起作用。