我環顧四周,我無法確定其他類似問題是否回答此問題。是否可以轉發聲明名稱空間內的typedef?
// lib.h
namespace lib_namespace
{
struct lib_struct
{
typedef std::vector<LibObject> struct_value;
};
typedef lib_struct::struct_value lib_value; // compiler points here
};
// my.h
// attempt at forward declaration
namespace lib_namespace { class lib_value; };
...
// my.cpp
#include "lib.h"
我得到一個重新定義編譯錯誤,這是可以理解的,但有沒有辦法來轉發聲明的typedef?
我的目的是避免添加lib.h作爲我正在創建的庫之外的依賴項。也許有更好的方法來實現這一目標?
編輯:爲了澄清,我試圖避免將額外的包含目錄行添加到所有項目文件,因爲我使用的是第三方庫而使用我創建的庫,上述情況是我被卡住了。因此,如果我在my.cpp
中包含lib.h
,但不包括my.h
。