Я хочу использовать стороннюю библиотеку, не используя ее заголовочный файл. Мой код находится в своем собственном пространстве имен, поэтому я не могу использовать обычное прямое объявление, поскольку не хочу загрязнять глобальное пространство имен. В настоящее время у меня есть что-то подобное:
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 не работает.