Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.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/9/javascript/400.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++ 指向类的前向声明typedef指针_C++_Forward Declaration - Fatal编程技术网

C++ 指向类的前向声明typedef指针

C++ 指向类的前向声明typedef指针,c++,forward-declaration,C++,Forward Declaration,我对这件事想了一段时间,但我似乎不能把我的头围绕在它上面。有没有人能分享一些关于我的问题和可能的解决方案的技术细节 我拥有的: A.h class A { typedef A* APtr; }; #include "A.h" Class Test { A::APtr _aPtr; }; 程序.h class A { typedef A* APtr; }; #include "A.h" Class Test { A::APtr _aPtr; }; 我试图做的是消除在Pr

我对这件事想了一段时间,但我似乎不能把我的头围绕在它上面。有没有人能分享一些关于我的问题和可能的解决方案的技术细节

我拥有的:
A.h

class A {
  typedef A* APtr;
};
#include "A.h"

Class Test
{
  A::APtr _aPtr;
};
程序.h

class A {
  typedef A* APtr;
};
#include "A.h"

Class Test
{
  A::APtr _aPtr;
};
我试图做的是消除在
Program.h
中包含头
A.h
的需要,并希望使用向前声明从
A.h
中向前声明定义的类型
APtr

希望我已经澄清了我的问题


谢谢

如果您的唯一目标是从
Program.h
中删除
#包括A.h
,并且只需要对
Program.h
中的
A
进行指针访问,那么只需向前声明类,并直接使用指针类型就足够了

程序.h
正如您问题下的评论中提到的@Swordfish,您不能使用转发声明来访问类内的成员。

如果您的唯一目标是从
Program.h
中删除
#包括a.h
,并且您只需要指针访问
Program.h
中的
a
,然后只需向前声明类,并直接使用指针类型就足够了

程序.h
正如您问题下的评论中提到的@Swardfish,您不能使用转发声明访问类内的成员。

您不能。转发声明不足以访问成员。如果在
Test
中使用
A*
而不是
A::APtr\u APtr
,则使用类似
class A的正向声明之前声明的
测试就可以了。谢谢回复。有什么解决方案可以在一个位置执行这些typedef,并在多个文件中使用它吗?也许可以通过解决它?你不能。转发声明不足以访问成员。如果在
Test
中使用
A*
而不是
A::APtr\u APtr
,则使用类似
class A的正向声明之前声明的
测试就可以了。谢谢回复。有什么解决方案可以在一个位置执行这些typedef,并在多个文件中使用它吗?也许可以通过以下方式解决?