Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是正确的方法来向前声明指向类的指针,以便在类声明中使用?_C++_Class_Forward Declaration - Fatal编程技术网

C++ 什么是正确的方法来向前声明指向类的指针,以便在类声明中使用?

C++ 什么是正确的方法来向前声明指向类的指针,以便在类声明中使用?,c++,class,forward-declaration,C++,Class,Forward Declaration,比如说, class Segment { friend bool someFunc( P_Segment p ); }; typedef boost::shared_ptr<Segment> P_Segment; 类段 { friend-bool-someFunc(P_段P); }; typedef boost::共享ptr P_段; 如何最好地声明p_段以便编译?在这种情况下,您没有选择,因为您无法转发声明typedef。您必须转发声明的段类 c

比如说,

   class Segment
   {
      friend bool someFunc( P_Segment p );
   };

typedef boost::shared_ptr<Segment> P_Segment;
类段
{
friend-bool-someFunc(P_段P);
};
typedef boost::共享ptr P_段;

如何最好地声明p_段以便编译?

在这种情况下,您没有选择,因为您无法转发声明typedef。您必须转发声明的

class Segment;

typedef boost::shared_ptr<Segment> P_Segment;

class Segment
{
    friend bool someFunc( P_Segment p );
};
类段;
typedef boost::共享ptr P_段;
类段
{
friend-bool-someFunc(P_段P);
};

在这种情况下,您别无选择,因为您无法向前声明typedef。您必须转发声明的

class Segment;

typedef boost::shared_ptr<Segment> P_Segment;

class Segment
{
    friend bool someFunc( P_Segment p );
};
类段;
typedef boost::共享ptr P_段;
类段
{
friend-bool-someFunc(P_段P);
};

向前声明类,然后向前声明智能指针(共享\u ptr可以接受不完整的类型):

类段;
typedef boost::共享\u ptr段\u ptr;
类段
{
friend bool someFunc(段p);
};

向前声明类,然后向前声明智能指针(共享\u ptr可以接受不完整的类型):

类段;
typedef boost::共享\u ptr段\u ptr;
类段
{
friend bool someFunc(段p);
};

另一种方法是使typedef成为类的成员:

class Segment
{
    typedef boost::shared_ptr<Segment> pointer;
    friend bool someFunc( pointer p );
};
类段
{
typedef boost::共享_ptr指针;
friend-bool-someFunc(指针p);
};

这会改变您访问它的方式当然,您不必在类之外使用
段::指针。

另一种方法是使typedef成为类的成员:

class Segment
{
    typedef boost::shared_ptr<Segment> pointer;
    friend bool someFunc( pointer p );
};
类段
{
typedef boost::共享_ptr指针;
friend-bool-someFunc(指针p);
};

这会改变你访问它的方式。当然,你不必在课堂外使用
Segment::pointer

其他人所说的没有错,只是为了另一个选择:

class Segment
{
public:
   typedef boost::shared_ptr<Segment> P_Segment;
   friend bool someFunc( P_Segment p );
};

using Segment::P_Segment;
类段
{
公众:
typedef boost::共享ptr P_段;
friend-bool-someFunc(P_段P);
};
使用段::P_段;

其他人所说的没有错,只是为了另一个选择:

class Segment
{
public:
   typedef boost::shared_ptr<Segment> P_Segment;
   friend bool someFunc( P_Segment p );
};

using Segment::P_Segment;
类段
{
公众:
typedef boost::共享ptr P_段;
friend-bool-someFunc(P_段P);
};
使用段::P_段;

谢谢大家,我只是想确保看起来不那么优雅的旋转是必要的。谢谢大家,我只是想确保看起来不那么优雅的旋转是必要的。