[英]How can I forward declare a type I'm going to create with typedef?
例如,請使用以下代碼段:
class Foo;
class Something {
Foo *thing;
};
typedef std::vector<Something> Foo;
這不能編譯,因為在命中typedef
時Foo
已經是一個類型。 但是,我認為它顯示了我的用例; 我有周期依賴,需要一個來實現另一個,但(目前)其中一個是typedef'd。 我不想寫類似的東西
class Foo {
std::vector<Something> inside;
}
因為那時我需要記住每個my_foo.inside.some_method()
的inside
。 我還想避免在std::vector<Something>
周圍編寫一個包裝器,因為它是很多樣板文件。
我如何轉發聲明一個我用typedef
定義的類型? 或者,如何在不使用上述解決方案的情況下解決我的周期性依賴問題? 有可能嗎?
請注意,我不是在問“如何使用尚未聲明的類型進行typedef
”。 我問“如何使用typedef
來定義先前聲明的類型”。
轉發聲明該類:
class Something;
typedef std::vector<Something> Foo;
class Something { Foo *thing; };
如果您使用的是C ++ 11或更高版本,請使用using
聲明來代替typedef
:
class Something;
using Foo = std::vector<Something>;
class Something { Foo *thing; };
就這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.