包含在 Eclipse Mars C++ 中
Includes in Eclipse Mars C++
我在 Main.cpp
文件中定义了函数 int getRandomNumber()
。在这个文件之外,还有class个文件,由头文件和class个文件组成。
出于某种原因无法从其他 class 文件中访问函数 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;
}
为什么 "Created"、"Tested" 和 "Destroyed" 都打印到控制台,即使 ClassName.cpp
文件从未明确包含在任何地方?
为什么无法从 ClassName.h
文件访问 int getRandomNumber()
,即使预处理器将其粘贴到包含它的位置?同样的事情也适用于 <iostream>
。为什么它需要再次包含在 .cpp
文件中?
要从多个位置访问 getRandomNumber()
,您可以将其移动到 header,然后将其包含在需要该函数的所有源文件中:
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
现在您可以通过在任何源文件中 #include
访问 getRandomNumber()
。
我在 Main.cpp
文件中定义了函数 int getRandomNumber()
。在这个文件之外,还有class个文件,由头文件和class个文件组成。
出于某种原因无法从其他 class 文件中访问函数 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;
}
为什么 "Created"、"Tested" 和 "Destroyed" 都打印到控制台,即使 ClassName.cpp
文件从未明确包含在任何地方?
为什么无法从 ClassName.h
文件访问 int getRandomNumber()
,即使预处理器将其粘贴到包含它的位置?同样的事情也适用于 <iostream>
。为什么它需要再次包含在 .cpp
文件中?
要从多个位置访问 getRandomNumber()
,您可以将其移动到 header,然后将其包含在需要该函数的所有源文件中:
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
现在您可以通过在任何源文件中 #include
访问 getRandomNumber()
。