可能重複:
Forward declaration of nested types/classes in C++如何轉發聲明內部類?
我有一類這樣的...
class Container {
public:
class Iterator {
...
};
...
};
在其他地方,我想通過引用傳遞一個集裝箱::迭代器,但我不想包含頭文件。如果我嘗試轉發聲明該類,則會出現編譯錯誤。
class Container::Iterator;
class Foo {
void Read(Container::Iterator& it);
};
編譯上面的代碼給...
test.h:3: error: ‘Iterator’ in class ‘Container’ does not name a type
test.h:5: error: variable or field ‘Foo’ declared void
test.h:5: error: incomplete type ‘Container’ used in nested name specifier
test.h:5: error: ‘it’ was not declared in this scope
我怎樣才能向前聲明這個類,所以我不必包括聲明迭代器類的頭文件?
通用基類是我最終使用最多的解決方案。 – Coyote 2013-10-03 12:49:27
如果需要,您可以使用朋友來解決此問題。 – 2016-06-14 16:32:46