class Segment
{
friend bool someFunc(P_Segment p);
};
typedef boost::shared_ptr<Segment> P_Segment;
如何最好聲明P_Segment所以這個編譯?
class Segment
{
friend bool someFunc(P_Segment p);
};
typedef boost::shared_ptr<Segment> P_Segment;
如何最好聲明P_Segment所以這個編譯?
在這種情況下,你沒有選擇,因爲你不能轉發declare typedefs。您必須轉發宣佈的Segment
類。
class Segment;
typedef boost::shared_ptr<Segment> P_Segment;
class Segment
{
friend bool someFunc(P_Segment p);
};
轉發聲明類,之後向前聲明的智能指針(shared_ptr的可以接受不完整的類型):
class Segment;
typedef boost::shared_ptr<Segment> Segment_PTR;
class Segment
{
friend bool someFunc(Segment_PTR p);
};
另一種方法是使的typedef類的成員:
class Segment
{
typedef boost::shared_ptr<Segment> pointer;
friend bool someFunc(pointer p);
};
這改變了你如何訪問它,當然,你不需要在課堂以外使用Segment::pointer
。
沒有錯什麼其他人說,但只是一種替代方案:
class Segment
{
public:
typedef boost::shared_ptr<Segment> P_Segment;
friend bool someFunc(P_Segment p);
};
using Segment::P_Segment;
感謝所有,我只是想確保不那麼優雅尋找回旋是必要的。 – drb