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