C++不是类的成员未知重写说明符已经定义或声明成员函数没有重载函数可以接受跳过明显的函数体意外的标记位于前的问题解决

[C++]VS环境报错:不是类的成员 未知重写说明符 已经定义或声明成员函数 没有重载函数可以接受 跳过明显的函数体 意外的标记位于";"前 的问题解决

今日在写代码中添加一个类后,触发了诸多错误,且错误均是在编译后产生的

首先,让我们来端详一下这些错误
C++不是类的成员未知重写说明符已经定义或声明成员函数没有重载函数可以接受跳过明显的函数体意外的标记位于前的问题解决

C++不是类的成员未知重写说明符已经定义或声明成员函数没有重载函数可以接受跳过明显的函数体意外的标记位于前的问题解决
C++不是类的成员未知重写说明符已经定义或声明成员函数没有重载函数可以接受跳过明显的函数体意外的标记位于前的问题解决

C++不是类的成员未知重写说明符已经定义或声明成员函数没有重载函数可以接受跳过明显的函数体意外的标记位于前的问题解决
C++不是类的成员未知重写说明符已经定义或声明成员函数没有重载函数可以接受跳过明显的函数体意外的标记位于前的问题解决


足足

C++不是类的成员未知重写说明符已经定义或声明成员函数没有重载函数可以接受跳过明显的函数体意外的标记位于前的问题解决
170条错误

瞬间就给我搞懵逼了

并且我仔细检查了每一个错误
发现在语法上均没有错误

那么这些问题是如何产生的呢?


通过观察 不难发现 所有错误都是与Line这个类有关的

错误的原因就是头文件的问题
可能的原因有以下几种(由网上冲浪加以总结,由于编者水平有限,可能有误,恳请指出)

  1. 缺少类的头文件
  2. 重复包含头文件
  3. 循环包含头文件
  4. 头文件包含顺序有误

经检查 1无问题

2 由于使用了#pragma once 不会重复包含头文件(或用#ifndef

实际问题出现在3中

Shape类与Line类互相包含了对方的头文件
造成了编译器无休止的彼此包含


解决方法

将Line类写在Shape.h中


参考资料:
“意外的标记位于“;”之前;语法错误 : 缺少“;”(在“*”的前面);缺少类型说明符 - 假定为 int”

关于【error C3646: 未知重写说明符】的若干种可能性

C++类包含问题(重复包含和相互包含)

循环包含

2020.6.6
编者水平有限 希望能对有相同遭遇的朋友有所帮助