मुझे स्मार्ट पॉइंटर्स का उपयोग करना अच्छा लगता है, और कुछ कोड देखा है जो typedef
के अच्छे उपयोग को सुंदर बनाता है। उदाहरण के लिए:स्मार्ट पॉइंटर्स, टाइपिफ और अग्रेषित घोषणाएं
struct A {
typedef boost::shared_ptr<A> pointer;
};
मुझे लिखने के लिए अनुमति देता है: A::pointer a(new A);
लेकिन मैं अपने typedef
खुशी में एक छोटी सी समस्या हुई है: - /, आगे घोषणाओं ...
तो इस परिदृश्य की कल्पना:
struct B;
struct A {
boost::shared_ptr<B> b_;
};
struct B {
boost::shared_ptr<A> a_;
};
अच्छी तरह से काम करता है, लेकिन मुझे इसे थोड़ा साफ करना अच्छा लगेगा। दुर्भाग्य से, इस
struct B;
struct A {
typedef boost::shared_ptr<A> pointer;
B::pointer b_; // <-- error here
};
struct B {
typedef boost::shared_ptr<B> pointer;
A::pointer a_;
};
मुझे समझ में क्यों, फाइल में उस बिंदु पर, संकलक कोई जानकारी नहीं वास्तव में बी एक प्रकार में यह pointer
नामित किया है कि है काम नहीं करता है।
मुझे एहसास है कि मैं कम से कम कुछ सामानों के लिए पुराने दृष्टिकोण का उपयोग कर फंस गया हूं, लेकिन मुझे कुछ चालाक विचार सुनना अच्छा लगेगा।
सहमत हैं, बस एक टिप्पणी छोड़ दें कि बाकी कोड को बी :: पॉइंटर का उपयोग करना चाहिए, क्योंकि प्रकार बराबर होंगे – totowtwo