错误 未知重写说明符 问题

news/2024/11/8 14:53:35/

在用多文件编译来写一个程序时,遇到了一个错误:

错误C3646“name”: 未知重写说明符

于是我就去某搜索引擎上搜索一下前辈们对这个错误的心得

综合网上的经验我总结了一下出现这个错误有可能的几种情况:

1、头文件之间的循环引用

比如:在a.h中包含了b.h并创建了一个b类对象,然后在b.h中又包含了a.h。

解决方法:检查工程的头文件包含关系,防止头文件的循环引用。

2、分号问题

在头文件的代码里面粗心使用了中文的分号(通常有可能是在报错代码的上一行)

解决方法:检查报错头文件中的符号

3、在使用一个类中包含了另一个类时两个类的定义顺序不对

示例代码:

class A{
B b;
}

class B{
int i;
}

在这段代码中,类A中使用了类B来定义了一个对象,但是此时类B的定义却在类A之后,这就可能产生了“未知重写说明符”的错误。
解决方法:检查类的生命顺序,被包含的类的生命顺序应该在包含它的类之前。

#include
#include

#include"student.h"

using namespace std;
程序很简单,只有两个文件,main.cpp和student.h,这是main.cpp的宏定义部分(Student.h没有宏定义,直接开始定义类)。而这样编译之后,在student.h的编译中就会报错:错误C3646“name”: 未知重写说明符(下面还有很多,都是这种,就不一一列举了)
在经过多次胡乱尝试之后,我发现如果将#inlcude"student.h"放在using namespace std;下面时,这个程序就可以正常运行了。修改之后的main.cpp宏定义部分如下:

#include
#include

using namespace std;

#include"student.h"
这样就没有“未知重写说明符”的错误了,虽然这次歪打正着,但是也说明自己了对using namespace的理解不够。
于是再查了一些关于using namespace的东西。


http://www.ppmy.cn/news/806486.html

相关文章

浏览器报错 未知的运行时错误

使用ajax动态刷新页面的时候用到了,innerHTML这个方法,这个比使用DOM要简单一些,浏览器报错 "未知的运行时错误(unknown runtime error)" 原因就是:IE在对innerHTML进行写操作的时候会检查element是否具备做为这些内容…

错误102 (net::ERR_CONNECTION_REFUSED): 未知的错误

今天在虚拟机里面用了一个代理软件来达到翻墙的目的,想去看看facebook的神奇。关了了该代理软件后,IE就上不了网了。报的错是 错误102 (net::ERR_CONNECTION_REFUSED): 未知的错误 这个问题是修改了IE的代理服务器导致的,解决方法为&#xf…

19.错误(error)

Lua所遇到的任何未预期条件都会引发一个错误。因此在发生错误时不能简单的崩溃或着退出,而是结束当前程序块并返回应用程序。当错误引发时进行恰当的处理是最合适的,然而这个阶段伴随着错误的捕获、错误的处理、错误追溯等处理。Lua中有函数pcall、error…

解决:发生系统错误 5;拒绝访问!

在dos下运行net命令或其它!提示发生系统错误 5;拒绝访问! 这是因为权限不够的问题。 首先,不要以为用admin account登录系统后,用ctry R --> cmd,就有管理权限; 此时,只是user…

第一章 一般错误信息 - 错误代码 0 到 99

文章目录 第一章 一般错误信息 - 错误代码 0 到 99一般错误信息错误代码 0 到 99 第一章 一般错误信息 - 错误代码 0 到 99 一般错误信息 错误代码被报告为 ERROR #nnn。这些错误代码有时称为 %Status 错误代码。 可以使用 DisplayError() 和 Error() 方法确定指定错误代码的…

错误代码9

自己在写从文件循环读每个句子的时候出现问题 错误1: fopen(/home/xbwang/Desktop/scen_test_sim.csv,r) while True:linef.readline()if lineNone:breakaline.strip().split(",")[1:]if len(a) > 10:flag 0for i in range(10):flag flag 1con a[i]…

透彻理解 UART 通信的基本方法

UART是一种异步全双工串行通信协议,由 Tx 和 Rx 两根数据线组成,因为没有参考时钟信号,所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数,从而按照相同的速率进行通信。 异步通信以一个字符为传输单位…

3.9.错误处理的理解以及错误的传播特性

目录 前言1. thrust2. error总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习精简 CUDA 教程-错误处理的理解以及错误的传播…