我在几个弱点之前就开始了C ++编程,我对在单独的文件中定义类的文件有疑问。这是我的代码。
main.cpp
#include <iostream>
#include "Maths.h"
int main() {
Maths m;
int s = m.sum(1,2);
std::cout << s << std::endl;
return 0;
}
数学
#ifndef Maths_H
#define Maths_H
class Maths
{
public:
int sum(int a, int b);
};
#endif
Maths.cpp
#include <iostream>
#include "Maths.h"
int Maths::sum(int a, int b)
{
return a + b;
}
为什么不能
#define
与您的班级名称相同。例如在我的脚本“数学”中?https://repl.it/repls/UnwillingFreeHeterodontosaurus
最佳答案
您的#define
称为宏,预处理器将宏替换为某些宏。
例如,您将宏Maths
定义为不被替换,这就是预处理器将要做的。定义class Maths { ... }
将替换为class { ... }
。这是无效的。
由于预处理器宏不存在于任何特定的命名空间中(它们实际上与实际的C ++解析器分开处理),因此它们是全局的。为了避免符号名称冲突,宏通常使用所有大写字母进行拼写。在您的情况下,应改用MATHS
。
关于c++ - Cpp在类中定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48251273/