我喜歡使用智能指針,並且看到了一些代碼,它可以很好地使用typedef
s使它們變得更漂亮。例如:智能指針,類型定義和前向聲明
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_;
};
我明白爲什麼,在文件中的那個點,編譯器沒有任何信息的B實際上有一個類型它命名pointer
。
我有一種感覺,我堅持使用舊的方法至少對某些東西,但我很樂意聽到一些聰明的想法。
同意,只是留下一個評論,其餘的代碼應該使用B ::指針,因爲類型將是等效的 – totowtwo 2011-06-16 20:29:16