我分手的圓形包括通過向前宣佈在其各自的標題的類的依賴性,但是這使小皺紋在現有常規使用一個類的內部的類型別名:是否有可能使用C++ 11中的前向聲明類聲明嵌套類型別名?
#include <memory>
class C {
public:
using Ptr = std::shared_ptr<C>;
};
在理想情況下它倒是有可能做這樣的事情:
#include <memory>
class C;
using C::Ptr = std::shared_ptr<C>;
但是這是不可能的,因爲C
不是一個完整的類型(還)。我意識到可以創建一個別名using CPtr = std::shared_ptr<C>;
,但我希望我錯過了一些明顯的東西,使用typename
或其他一些關鍵字來建立C
作爲創建嵌套類型別名的完全足夠類型。
您是否嘗試過使用指針的typedef? 'typedef C * ForwardedCClass;'? – OzBarry 2013-03-01 20:59:25
'C'總是一個「有效的標識符」,並且在前向聲明後立即是一個有效的「類型名稱」,但直到類定義時纔是「完整類型」。 – aschepler 2013-03-01 20:59:37
謝謝。更新問題中的措詞更加正確。 – Sean 2013-03-01 21:01:37