我在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
文件中?
答案 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
- 在任何源文件中。