包含在Eclipse Mars C ++中

时间:2015-11-15 12:03:41

标签: c++ eclipse include eclipse-mars

我在int getRandomNumber()文件中定义了函数Main.cpp。如果这个文件外面有类,由头文件和类文件组成。

由于某种原因,无法从其他类文件中访问函数int getRandomNumber(),即使它是全局的。

Main.cpp中的代码如下所示:

#include <iostream>

using namespace std;

int getRandomNumber() {
    return 4; // Chosen by fair dice roll
}

#include "folder/ClassName.h"

int main(int argc, char* argv[]) {
    ClassName t;
    t.test();
    return 0;
}

ClassName.h的内部看起来像这样:

#ifndef SRC_CLASSNAME_H_
#define SRC_CLASSNAME_H_

class ClassName {
public:
    ClassName();
    virtual ~ClassName();
    void test();
};

#endif /* SRC_CLASSNAME_H_ */

最后,ClassName.cpp的内容包含以下内容:

#include <iostream>
#include "ClassName.h"

using namespace std;

ClassName::ClassName() {
    cout << "Created" << endl;
}
ClassName::~ClassName() {
    cout << "Destroyed" << endl;
}
void ClassName::test() {
    cout << "Tested" << endl;
}

怎么来&#34;创建&#34;,&#34;经过测试&#34;和#34;被摧毁&#34;都打印到控制台,即使ClassName.cpp文件从未明确包含在任何地方?

为什么不能从int getRandomNumber()文件访问ClassName.h,即使预处理器将其粘贴到包含它的位置?同样的事情也适用于<iostream>。为什么需要将其再次包含在.cpp文件中?

1 个答案:

答案 0 :(得分:0)

要从多个位置访问getRandomNumber(),您可以将其移至标题,然后将其包含在需要该功能的所有源文件中:

<强> MyHeader.h

#ifndef MYHEADER_H
#define MYHEADER_H

int getRandomNumber();

// ... other stuff here

#endif /* MYHEADER_H */

<强> Main.cpp的

#include "MyHeader.h"

int getRandomNumber() {
    return 4; // Chosen by fair dice roll
}

// ... other stuff here

现在,您可以通过getRandomNumber()访问#include - 在任何源文件中。