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

如果在程序中出现了error C3646,那么这个错误可能是由多种问题所导致的,这篇文章将对多种错误及对应解决方法进行分析。

在MSDN的官方网站中,Complier Error C3646的定义为unknown override specifier,并且其解释为The compiler found a token in the position where it expected to find an override specifier, but the token was not recognized by the compiler.

1.循环引用

在分离式编译中,我们往往习惯将不同的类或者函数分别写在不同的函数中,提高工作效率。但如果在使用时出现两个类分别在两个不同的文件中编写,并且相互引用,则会出现循环引用,引发此错误。

举例:tire.h/tire.cpp和auto.h/auto.cpp 在tire.h中include auto.h,并定义了一个auto的object,然后在auto.h中又include了tire.h

解决方案:在报错的那个.h文件的类定义前加上class声明调用的类(即class 类)。

2.语法错误

此问题大多因为粗心而导致,比如在某个成员函数中把分号;写成了中文分号;,将会出现此类错误。

解决方案:修改分号

3.类的顺序错误

如果一个类的成员中包含另一个类,则被包含的类的生命一定要在包含的类之前。

举例:

class Auto {
      Tire tire;
}

class Tire {
      int weight;
}

// This will cause error C3656

解决方法:调整类的位置。

在遇到这种问题的时候,我们需要透过现象看本质。

祝大家圣诞节快乐:)

时间: 2024-10-21 02:58:07

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

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

1 #include<iostream> 2 using namespace std; 3 4 5 extern int i; 6 extern float f(float a); 7 float b; 8 float f(float a){ 9 return a+1.0; 10 } 11 int i; 12 int h(int x) 13 { 14 return x*i; 15 } 16 17 main() 18 { 19 b=1.0; 20 i=2; 21 f(b); 22 h(i); 2

[转载]DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000)

一.错误情况 环境:win7+iis7.0 DirectoryEntry配置IIS7出现如下错误 或者是 下面一段代码在IIS6.0下运转正常,但IIS7.0下运转会出错: System.DirectoryServices.DirectoryEntry iisServer;iisServer = new System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC/1");System.DirectoryServices.

error C4430: 缺少类型说明符 - 假定为 int

原文地址:error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int作者:tony c:evanworkspace11netwowkippack.h(50) : error C2146: 语法错误 : 缺少“;”(在标识符“nSourPort”的前面) c:evanworkspace11netwowkippack.h(50) : error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int c:evanworkspace1

Java 计算中英文长度的若干种方法

在项目开发中经常碰到到输入字符的校验,特别是中英文混合在一起的校验.而为了满足校验的需求,有时需要计算出中英文的长度. 本文将通过几种常用的方法实现长度的计算: <span style="font-size:18px;">import java.io.UnsupportedEncodingException; /** * 中英文校验的处理 * @author a123demi * */ public class EnChValidate { public static vo

footer固定在页面底部的若干种方法

1 <div class="header"><div class="main"></div></div> 2 <div class="container"><div class="main"></div></div> 3 <div class="footer"><div class="

未知宽度水平居中的几种方法

在某些特定的场合,在没有知道宽度的情况下却要求水平居中,前段时间在写分页的时候碰到了这个问题.当时在网上找了一些解决方法,并选了一个最合适的方法,现将当时整理的一些方法发出.下列以分页作为演示说明: 点击查看演示DEMO 方案一 利用浮动的包裹性和相对定位百分比数据值特性,传说称之为"相对浮动" .unknow_width_center1 {position:relative; left:50%; float:left;} .unknow_width_center1 li {posit

error C3646 和 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

总结了一下,主要有以下原因: 1. (此情况经常出现在大型工程项目中)如果存在两个类的头文件a.h和b.h,在a.h中有这样的语句:#include "b.h",在b.h文件中有这样的语句:#include "a.h"   且在一个类中有另一个类的对象时   那么就会出现这样的错误. 2. 没有包含要定义的类的头文件. 3.项目中少加了宏定义,导致头文件重复定义或相应宏无法识别. 4.当有多个头文件时,顺序写反也可能导致相关的错误,其根本是头文件中的预编译语句被隐去

DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000)

一.错误情况 环境:win7+iis7.0 DirectoryEntry配置IIS7出现如下错误 或者是 下面一段代码在IIS6.0下运转正常,但IIS7.0下运转会出错: System.DirectoryServices.DirectoryEntry iisServer;iisServer = new System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC/1");System.DirectoryServices.

error C4430: 缺少类型说明符 - 假定为 int....的一种情况的解决方法

这段时间用VS2013写代码的时候,一不小心就出现了这个提示,这个问题困扰了我一段时间,不过总算解决了,这里记录一下! 我这里先描述本人碰到的问题: 正如上图所见,一段在我们眼里看起来没有任何错误的代码,居然爆出了4430的错误,先不急,我们先看一看DlgAddAccount.h文件中包含的头文件: 再看一看AddAccountInfoDlg.h中包含的头文件: 我们发现一件很有趣的事情,两个文件互相包含,这样的话,我们将AddAccountInfo.h中的#include "DlgAddAcc