使用其他类中的函数而不使用#include

时间:2014-04-23 14:39:29

标签: c++ class include

在其中一个类中,我需要使用另一个类的一个函数。我想知道是否有另一种方法来调用该类而不使用页面顶部的#include“OtherFunction.h”。我以为我可以使用OtherFunction ::但是当我这样做时,eclipse会给我一个错误。是否有另一种方法从另一个类调用此函数而不使用#include或添加继承的额外开销?

这些类不是静态的。我正在编写单元测试,当我在我的驱动程序类中测试一个调用我的支持类的函数时,我遇到了重新声明错误。所以我试图找到一个解决方案,我可以测试支持和驱动程序类中的两个函数。

我的所有课程都被

包围
#ifndef SHAREDSCANNINGFUNCTIONS_H_
#define SHAREDSCANNINGFUNCTIONS_H_

#endif 

事实证明,内联函数需要在#endif之前。每天学些新东西。感谢所有帮助过的人

1 个答案:

答案 0 :(得分:4)

不,这是不可能的。 为什么你这样做?写#include的成本是多少?

更准确地说,如果您没有告诉它在何处找到它,您的文件将如何识别您的课程定义?

编辑: @Gonmator 一个人不应该这样做,这很糟糕。在cpp文件中定义类定义非常糟糕。 唯一可以做到的时刻是该类仅由此文件使用。那么它应该是静态的

EDIT2: 好吧,我无法弄清楚如何将代码置于评论中。 我想说:

#ifndef __YOURFILENAME_H__
#define __YOURFILENAME_H__
class myclass{}
#endif

看起来你遇到了这样的问题:

//classA.hh
class A{
  B instanceofB;
}

//classB.hh
class B{
  A instanceofA;
}

这样做会产生一些问题。编译说"错误:使用不完整的blahblah .."

您所要做的就是在类定义的顶部添加类名,如下所示:

//classA.hh
class B;
class A{
  B instanceofb;
}

//classB.hh
class A;
class B{
  A instanceofA;
}

EDIT3: 看起来我没有理解这个问题。但我的回答仍然是正确的。