Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c类和x2B类的重新定义+;标头档_C++_File_Header - Fatal编程技术网

C++ c类和x2B类的重新定义+;标头档

C++ c类和x2B类的重新定义+;标头档,c++,file,header,C++,File,Header,主要类别: #包括“otherClass.h” 使用名称空间std; int main(){ a cl; 返回0; } 头文件: #如果包含其他类别#_ #定义包含的其他类_ 甲级{ 整数相加(整数a、整数b); 整数减去(整数a,整数b); }; #恩迪夫 头文件对应的.cpp类 #包括“otherClass.h” a类{ 整数相加(整数a,整数b){ 返回(a+b); } 整数减法(整数a,整数b){ 返回(a-b); } }; 错误: Text.cpp:13:错误:“cl”未在此范围

主要类别:

#包括“otherClass.h”
使用名称空间std;
int main(){
a cl;
返回0;
}
头文件:

#如果包含其他类别#_
#定义包含的其他类_
甲级{
整数相加(整数a、整数b);
整数减去(整数a,整数b);
};
#恩迪夫
头文件对应的.cpp类

#包括“otherClass.h”
a类{
整数相加(整数a,整数b){
返回(a+b);
}
整数减法(整数a,整数b){
返回(a-b);
}
};
错误:

Text.cpp:13:错误:“cl”未在此范围内声明 otherClass.cpp:3:错误:重新定义“a类”otherClass.h:3: 错误:“a类”的先前定义

我有两个问题:首先,在我在头文件中添加类之前,该文件工作得很好(只包含函数)。一旦我添加了类,我就得到了上面两个错误。有人能告诉我如何安排我的头文件来修复这些错误吗?例如,我想知道如何为包含类的文件创建头文件


其次,如何获取它,以便在主函数的范围内声明类?

这是在
.cpp
文件中定义类的成员函数的方式:

#include "otherClass.h"

int a::add(int a, int b) {
  return (a + b);
}

int a::subtract(int a, int b) {
  return (a - b);
}

请注意,您已将成员声明为private,因此无法对其进行太多处理。

这是在
.cpp
文件中定义类的成员函数的方式:

#include "otherClass.h"

int a::add(int a, int b) {
  return (a + b);
}

int a::subtract(int a, int b) {
  return (a - b);
}
请注意,您已将成员声明为private,因此无法对其进行太多处理。

删除

class a {
决赛呢

};
从.cpp文件

(并根据前面的答案向方法中添加::)

删除

class a {
决赛呢

};
从.cpp文件


(根据前面的答案,在方法中添加一个::)

我仍然得到同样的错误:重新定义类/以前定义class@user1930111类定义很好(假设您希望成员是私有的)。但include-guard不应该有前导下划线。双前导下划线是为实现保留的。即使没有这些双下划线(我刚刚编辑了它),我仍然得到相同的结果errors@user1930111那么你在其他地方还有一些问题。我发布的内容,连同你的类定义,没有理由失败。我仍然得到同样的错误:类的重新定义/类的先前定义class@user1930111类定义很好(假设您希望成员是私有的)。但include-guard不应该有前导下划线。双前导下划线是为实现保留的。即使没有这些双下划线(我刚刚编辑了它),我仍然得到相同的结果errors@user1930111那么你在其他地方还有一些问题。我发布的内容以及您的类定义没有理由失败。这样,您只需在编译单元中对类进行无效的重新声明,而不只是为
类a
提供一个实现!这样,您只需在编译单元中对类执行无效的重新声明,而不只是为
类a
提供一个实现!