यह संभव नहीं है ... लेकिन यह विरासत दुरुपयोग :)
namespace detail
{
class A_EMyEnum
{
public:
enum {
EOne,
ETwo
} EMyEnum;
protected:
A_EMyEnum() {}
A_EMyEnum(const A_EMyEnum&) {}
A_EMyEnum& operator=(const A_EMyEnum&) { return *this; }
~A_EMyEnum() {}
}; // class A_EMyEnum
} // namespace detail
class B { // use detail::A_EMyEnum };
class A: public detail::A_EMyEnum
{
B mB;
};
दूसरी ओर के साथ नाटक किया जा सकता है ... क्यों आप बस आगे बी की घोषणा नहीं करते हैं?
class B;
class A
{
public:
enum EMyEnum {};
A();
A(const A&);
A& operator=(const A&);
~A();
void swap(A&);
private:
B* mB;
};
class B { // use A::EMyEnum };
निश्चित रूप से आपको वास्तव में ए के सभी सामान्य "डिफ़ॉल्ट जेनरेट" विधियों को लिखने की ज़रूरत है, लेकिन हे, इसका इतना खर्च नहीं होता है!
स्रोत
2010-02-11 13:54:29
सुपरसेट http://stackoverflow.com/questions/951234/forward-declaration-of-nested-types-classes-in-c –