簡體   English   中英

如何使用typedef轉發聲明我要創建的類型?

[英]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;

這不能編譯,因為在命中typedefFoo已經是一個類型。 但是,我認為它顯示了我的用例; 我有周期依賴,需要一個來實現另一個,但(目前)其中一個是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM