[英]What can I “forward declare” in C++?
我知道我能做到
class Foo;
可能
struct Bar;
和全球職能
bool IsValid(int iVal);
鍵入的枚舉怎么樣? 在未申報的課程中輸入的枚舉怎么樣? 具有未聲明的類的函數怎么樣? 那個未申報的課程中的靜態成員怎么樣? 在未知的命名空間中這些怎么辦? 我錯過了任何可以向前宣布的東西嗎?
你可以轉發聲明
如果通過“前向聲明”您嚴格意味着“聲明但未定義”,您也可以轉發聲明成員函數。 但是一旦聲明它們,你就不能在它們的類定義中重新聲明它們。 您無法轉發聲明枚舉。 我不確定我是否錯過了什么。
請注意,上面列出的所有前向聲明(部分和顯式特化除外)都需要使用非限定名稱聲明,並且成員函數和嵌套類只能在其類定義中聲明但未定義。
class A { };
class A::B; // not legal
namespace A { }
void A::f(); // not legal
namespace A { void f(); } // legal
class B { class C; }; // legal
class B::C; // declaration-only not legal
class D { template<typename T> class E; };
template<typename T> class D::E<T*>; // legal (c.f. 14.5.4/6)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.