C++ 类类型的定义重复定义问题 为什么第一个是错的,第二个是对的呢 不是都重复定义了吗??

作者&投稿:运世 (若有异议请与网页底部的电邮联系)
C++关于类成员函数重复定义问题~

看你编译信息,你有2个文件,text_Employee和Employee,你这里面有重复定义?
建议你把使用的文件分别对应贴出来,问题肯定是你文件组织有问题,必要的编译开关等等。

1、当1个C语言程序由 多个 源程序文件 组成时,由于每个 源程序文件 都有 #include #include "...h", 最终它们可能形成交叉 包含 和 重复包含 现象 而造成错误。

2、为了避免这种情况发生,可以 采用 定义宏 的方法 把各个头文件 包起来。
编译器 在正式编译的开始,现处理 宏 -- 也就是“预编译命令".
用 宏(#号开始的行) 把 头文件内容 包起来:
#ifndef _HEADER_One_H_ // 意思是:宏开始行,如果还没有定义 _HEADER_One_H_ 则 进入,否则退出
#define _HEADER_One_H_ //定义 _HEADER_One_H_//
header1.h
头文件内容
#endif // 宏结束行

经编译,你的第一个和补充的类都是对的,如果有问题那就是是你的public写错了。第二个却错了。

重定义中,类中的重定义只在该类中生效。类外面的从定义则对非重定义的类外生效。如:
typedef double Money;
class Aount {
typedef long double Money;
Money bal; //long double
};
Money bal; //double
所以你的第一个是没有问题的。但是第二个类中,就混淆了,主要看这个函数:
Type Exercise::setval(Type parm){ //返回值类型的Type是类外面重定义的,是string
val =parm+initval();
} //返回(虽然你没有返回- -!)的是类里面重定义的double,不匹配

重定义最好不要用重复的名字,太容易搞错了。
祝你学习愉快!


府谷县15614219798: C++中类型名可以被重复定义吗 -
邸颖小施: 如:typedef double Money; class Aount { typedef long double Money; Money bal; //long double };

府谷县15614219798: C++类的重定义问题 -
邸颖小施: 类可以在同一个程序,多个文件中都有定义,前提是一个文件至多只有一次对这个类的定义(为了让多个文件都使用这个类,这么做这是必需的) 但是 变量 和 函数 (inline 函数除外)在一个程序中最多只能定义一次 以上说的“文件”在规范化的语言中称作“翻译单元”(translation unit),简单来说,是C++源文件经过预处理之后所构成的单元

府谷县15614219798: c++语言,请问class类型重定义要怎么解决呀?急 -
邸颖小施: 估计是你头文件重复包含了.定义头文件使用pragma once放在头文件第一句

府谷县15614219798: c++有关对象的重复定义问题 -
邸颖小施: c++有关对象的重复定义问题 悬赏分:0 - 离问题结束还有 14 天 23 小时//说明Time是一个类 //问题,为什么t1不管是动态的,静态的都可以这样重复定义 void main() { int i=0; Time t1; if(1) { Time t1; if(1) { static Time t1; if(1) { static Time t1; } } } }

府谷县15614219798: c++在多个源文件中定义同一个类 -
邸颖小施: C++ Primer第四版上有这样的话:(出现在12.1.4) “在一个给定的源文件中,一个类只能被定义一次.如果在多个文件中定义一个类,那么每个文件中的定义必须是完全相同的” 可以追加为满意答案嘛,兄弟我现在需要满意回答的数目啊,拜托了~~

府谷县15614219798: C++中类的定义可以嵌套吗 -
邸颖小施: 可以,前者一般称为嵌套类,嵌套类一般为于定义执行类.class A{ class B{}; };外围类与嵌套类相互独立,相互没有特殊访问权限且对A的构造不会影响到B,只有需要使用到B的时候才会去实现,嵌套类的名子在其外围类的作用域...

府谷县15614219798: C语言如何防止类型重复定义? -
邸颖小施: 1、当1个C语言程序由 多个 源程序文件 组成时,由于每个 源程序文件 都有 #include <...>#include "...h", 最终它们可能形成交叉 包含 和 重复包含 现象 而造成错误.2、为了避免这种情况发生,可以 采用 定义宏 的方法 把各个头文件 包起来...

府谷县15614219798: C++重复定义怎么回事 -
邸颖小施: C++早就考虑到这个问题了.在BinTree.h中添加: #ifndef BINTREE_H #define BINTREE_H//这里是你原来的代码#endif

府谷县15614219798: C++重复定义是什么意思?怎么会出现这个错误 -
邸颖小施: 关于第一个,h是头文件,就是大部分比如类,函数,变量都定义在那里,而cpp主要是用来实现的,定义和实现分离,我想就所谓的防止重复定义 你老师的意思是一个cpp对应1个.h头文件,但是呢 有一些公用的,不如库,类之类的东西,是所有cpp都需要的,就会另外新建一个.h用来存储,专门用来放定义的 就是这个意思

府谷县15614219798: c++头文件被重复定义,看下面程序?怎么解决? -
邸颖小施: 在头文件中只申明,不要定义 像这些 char raw[30][50]; int line=0; 统统这样定义 extern char raw[30][50]; extern int line; 然后在某个c.pp文件中去定义 在头文件中只申明,不要定义 像这些 char raw[30][50]; int line=0;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网