Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.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++ 3.h和3.cpp文件_C++_Class_Pointers - Fatal编程技术网

C++ 3.h和3.cpp文件

C++ 3.h和3.cpp文件,c++,class,pointers,C++,Class,Pointers,我正在构建一个应用程序,它应该使用1.h和2.h中的一个类,其定义如下: <classname> *p; *p; 现在我可以在2.cpp中使用p。但我也想在3.cpp中使用它。我无法将2.h包含在3.cpp中。有没有办法让它在3.cpp中可见 感谢您的帮助。请举一个更具描述性的示例,说明您在某些代码中遇到的问题 通常,尝试执行以下操作: 每个标头应仅包含其自身具有相同名称的类 如果一个类正在使用另一个类,并且您可以在该标头中向前声明它,请执行以下操作 您不能向前声明该类是否具

我正在构建一个应用程序,它应该使用1.h和2.h中的一个类,其定义如下:

<classname> *p;
*p;
现在我可以在2.cpp中使用p。但我也想在3.cpp中使用它。我无法将2.h包含在3.cpp中。有没有办法让它在3.cpp中可见


感谢您的帮助。

请举一个更具描述性的示例,说明您在某些代码中遇到的问题

通常,尝试执行以下操作:

  • 每个标头应仅包含其自身具有相同名称的类
  • 如果一个类正在使用另一个类,并且您可以在该标头中向前声明它,请执行以下操作
您不能向前声明该类是否具有另一个类的实例,或者该类是否派生自另一个类

  • 编译单元(cpp)文件应包含它们所需的所有标题。理想情况下,首先包括它自己的标题

    • 您需要提供更多信息,但我想我已经知道了 您试图在定义的标题中使用类,即另一个标题,但由于某些原因,您无法将定义的标题包含到您处理的标题中。解决方案是创建一个“临时”定义,而不是包含

      例如: 您需要在1.h中使用myClassA,但它是在2.h中定义的,一些错误不允许您在1.h中包含2.h来解决它 写:

      类别myClassA


      在1.h之上,您可以引用它,但没有实现(因为它是在2.cpp中实现的)

      一个简单的规则是一个类,一个头文件

      鉴于:

      A.h:
      class A
      {
      };
      
      B.h:
      #include "A.h"
      class B
      {
        A obj;
      };
      
      C.h:
      #include "A.h"
      class C
      {
        A obj;
      };
      

      我希望这能回答这个问题。否则,请编辑您的问题,并提供更多详细信息和您试图实现的目标的示例。

      请解释为什么“无法将2.h包含在3.cpp中”。因为这应该是你问题的答案。你可以在任何
      .cpp
      中包含任何
      .h
      。否则,您就大错特错了.h文件定义了相应的.cpp文件的接口吗?当你定义这样一个接口时,你应该能够解决这个问题。更多的概括。如果必要的话,删掉符号,放入带有Foos和bar的示例代码,或者像用元信息替换实际信息的游戏中的B和CI,所以我们不用说一个特定的类,而不用说2个头,我们用2个头,现在下一个级别是:假设我们有一个源代码f(x)在某些语言Y中,x是字节索引,我们希望对2个数据源执行操作Z,并且假设出现错误E,我们如何解决这个问题?