重复包含定义 导致未定义类型不识别错误

错误提示:

f:\vs2010projects\combine\combine\func.h(9): error C2011: “func”:“class”类型重定义
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(21): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(21): error C2228: “.setindex”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(22): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(22): error C2228: “.setxx”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(23): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(23): error C2228: “.setyy”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(24): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(24): error C2228: “.setwidth”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(25): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(25): error C2228: “.setheight”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(26): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(26): error C2228: “.init”的左边必须有类/结构/联合

解决方法:

仔细查找,看看是否多次包含了该函数以及变量的定义:

#include <cv.h>
#include <highgui.h>
#include <iostream>
#include "func.h"
#include "road.h"

查找后发现#include "func.h"重复包含,注释掉即可

时间: 2024-08-26 14:06:11

重复包含定义 导致未定义类型不识别错误的相关文章

linux下链接出现未定义的应用解决方案

在linux下生成程序时,首先需要编译为.o文件,接着进行链接.在链接的时候容易出现未定义的应用错误,根本原因是找不到函数,但造成该现象有多种可能: 1.源程序中函数名不一致,比方说a.c中为a函数,在b文件调用时却用的时a1,就会造成找不到函数. 2.当链接的o文件不在一个文件夹下时,还需要考虑路径输入不正确,原理与第一条类似. 3链接时.o文件顺序不对,由于函数调用之间存在依赖性,不当的链接顺序也可能导致未定义出现. 4.当利用Makefile进行大型程序编译链接时,与第三种可能原因类似,还

头文件重复包含(转)

#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码:#include "x.h"#include "x.h" 显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码.但是下面的代码:#include "a.h"#include "b.h" 看上去没什么问题.如果a.h和b.h都包含了一个头文件x.h.那么x.h在此也同样被包含了两次,只不过它的形式不是那么明显而已. 多重包

C/C++函数重复定义、头文件重复包含、互相包含问题

1.避免头文件重复包含 // test.h 此段宏的意思是如果定义了宏变量TEST_H_则不再定义它 #ifndef TEST_H_ #define TEST_H_ //头文件内容 #endif 或者 // test.h 告诉预编译器只包含一次 #pragma once 2.避免重复定义 不要将函数定义放置在头文件里面,正确的做法是头文件放置函数声明,源文件放置函数定义.因为源文件是分别编译的,假如头文件放置了函数定义,包含该头文件的每一个源文件都会定义相应的函数,从而导致重复定义.但是几种情况

【转载】防止变量重复定义、头文件重复包含、嵌套包含

[转自] http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码: #include "x.h"#include "x.h" 显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码.但是下面的代码:#include "a.h"#include "

“不包含定义,并且找不到可接受类型的第一个扩展方法”

最近在敲王继彬视频中登录的例子时,经常遇到"不包含定义,并且找不到可接受类型的第一个扩展方法"的问题,于是就查了查相关的内容.错误列表见下图: 当设计界面出现这个问题时,返回Windows窗体界面,情况如下: 1.为什么会出现这个界面? Windows 窗体设计器无法加载时 Microsoft Visual Studio 中显示的设计时错误列表的含义和使用方法. 如果出现此错误列表,则不应将其理解为设计器中的 Bug,而应作为纠正代码中的错误的辅助手段. 2.这个界面的内容选项是什么?

预定义的类型“System.Object”未定义或未导入

生成网站或项目时,VS 2010 出现如下错误: 预定义的类型“System.Object”未定义或未导入 无效的引用选项 无法引用目录 解决方法: 关掉 VS 2010 重新打开即可.

Flashbuilder的bug FlashBuilder 1119: 访问可能未定义的属性 on (通过 static 类型

FlashBuilder 1119: 访问可能未定义的属性 on (通过 static 类型 当此问题出现的时候 无论 刷新 清理 注释 删除 乃至重启电脑都无济于事. 解决方法:备份此类到另外一个地方. 然后删除 ,刷新. 把刚才备份的类粘贴回来. Flashbuilder的bug FlashBuilder 1119: 访问可能未定义的属性 on (通过 static 类型,码迷,mamicode.com Flashbuilder的bug FlashBuilder 1119: 访问可能未定义的

C#引用COM对象,报错:《类型 *** 未定义构造函数, 无法嵌入互操作类型 *** 。请改用适用的接口》的解决办法。

错误信息: 1.类型“SQLDMO.BackupClass”未定义构造函数 2.无法嵌入互操作类型“SQLDMO.BackupClass”.请改用适用的接口. 代码如下:                 SQLDMO.Backup backup = new SQLDMO.BackupClass();                 SQLDMO.SQLServer sqlserver = new SQLDMO.SQLServerClass();                 sqlserver

类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数

错误 4317 无法嵌入互操作类型“Microsoft.Office.Interop.Word.ApplicationClass”.请改用适用的接口. 类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数 解决办法: 在Visual Studio 中点击菜单项“视图->解决方案资源管理器”,在其中点开“引用”文件夹,在"Microsoft.Office.Interop.Word" 上点击鼠标右键,选择“属性”,将属性中