c++ 类名和enum时重复时要在类名前加class::
c++ 类名和enum时重复时要在类名前加class::
一些不好的习惯都是用小写,但又没有区分开token,看看代码再说,下面的代码是我在测试polymorphism时写的一部分,怎么也查不出,最后主意到下面红色标志出来的语句,他们(animal)重复了,要区分开来。
- #include <iostream>
- #include <cstring>
- #include <string>
- using namespace std;
- enum zoo_obj_kind{
- null = 0,
- #define zk_null (zoo_obj_kind(null))
- no = 0,
- #define zk_no (zoo_obj_kind(no))
- animal = 1,
- #define zk_animal (zoo_obj_kind(animal))
- plant = 2,
- #define zk_plant (zoo_obj_kind(plant))
- others = 3,
- #define zk_others (zoo_obj_kind(others))
- max = 4
- #define zk_max 4
- };
- static const char * zoo_kind_str [zk_max ] ={
- "null",
- "animal",
- "plant",
- "others"
- };
- class obj{
- private:
- char name [40];
- // void *other_msg;
- public:
- obj() {
- strcpy(name,"null") ;
- }
- obj(char *nm){
- strncpy(name,!nm?"null":nm,sizeof(name));
- }
- void say(){
- cout << "name:" << name << endl;
- }
- void say(obj *obj){
- !obj
- ? cout << "null\n"
- : cout << "name:" << obj->name << endl;
- }
- };
- class zoo_obj{
- private:
- zoo_obj_kind z_kind;
- char name [40];
- void *other_msg;
- public:
- zoo_obj() {
- z_kind = null;
- strcpy(name,"null") ;
- }
- zoo_obj(char *nm, zoo_obj_kind k){
- strncpy(name,!nm?"null":nm,sizeof(name));
- z_kind = k;
- }
- void say(){
- cout << "name:" << name << ",kind:"
- << zoo_kind_str[(int) z_kind] << endl;
- }
- void say(zoo_obj *obj){
- !obj
- ? cout << "null\n"
- : cout << "name:" << obj->name << endl;
- }
- };
- class animal:public obj{
- private:
- int lags;
- public:
- animal(char *nm, int l) :lags(l), obj(nm){ }
- void say(){
- obj::say();
- cout << "lag:" << lags << endl;
- }
- };
- int main(void){
- zoo_obj obj = zoo_obj( "cat", zoo_obj_kind(animal));
- obj.say();
- class::animal dog ("joel's dog",4);
- dog.say();
- }
c++ 类名和enum时重复时要在类名前加class::的更多相关文章
- 2017.7.7 postgreSQL在插入造成重复时执行更新
参考来自:https://stackoverflow.com/questions/1109061/insert-on-duplicate-update-in-postgresql/1109198#11 ...
- sql语句-------重复时插入更新
ON DUPLICATE KEY UPDATE重复时插入更新 insert into user(id,username) value('231',"二人") on duplicat ...
- 【记录】VS2012新建MVC3/MVC4项目时,报:此模板尝试加载组件程序集“NuGet.VisualStudio.Interop...”
最近电脑装了 VisualStudio "14" CTP,由于把其他版本的 VS 卸掉,由高到低版本安装,当时安装完 VisualStudio "14" CTP ...
- 单片机usb转串口的时灵时不灵的解答
写这篇博客,首先检讨一下自己,因为以前串口的程序,也和步进电机一样,时灵时不灵,我现在终于知道这是为什么了,因为51上有三个串口,一个公口,一个母口,一个usb转串口,这样的话,串口有3个了,我手头上 ...
- c#中运行时编译时 多态
c#中运行时编译时 多态 public class aa { } public class bb:aa { } public class cc { public static void Main( ...
- [转]关于oracle sql语句查询时表名和字段名要加双引号的问题
oracle初学者一般会遇到这个问题. 用navicat可视化创建了表,可是就是不能查到! 后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引 ...
- 解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题
解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题. 有时候是src/main/resources下面的,有时候是sr ...
- 如何解决zabbix snmp异常超时、不稳定、时通时断:Timeout
针对平时工作中,zabbix snmp出现异常超时.不稳定.时通时断:Timeout while connecting 等的情况,以下我将以使用乐维监控为例,进行解决方案的详细叙述. 一.问题:设 ...
- webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载
webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载 原文:https://my.oschina.net/u/2344787/blog/400 ...
随机推荐
- 黑马程序员 ---> 正则表达式
--------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! --------------- 正则表达式 一.概述: 1.概念:符合一定规则的表达式. 2. ...
- C++ 函数声明中指定,默认参数
C++ 在声明函数的时候,如果指定了,参数的默认值,再调用函数的时候可以省略后面的参数. 如果调用函数写上的参数,但是不全.参数列表后面的使用默认值.如下例子,一看就清楚了. #include < ...
- WinForm 使用皮肤,且单击按更换皮肤。
运行效果: 首先把DLL程序集文件和SSK皮肤文件放在要运行程序的DEBug文件夹下,然后引入引用. 之后可以在程序里写代码了. private void Form2_Load(object send ...
- word2013 无endnote选项卡咋办
word2013 无endnote选项卡咋办? 前提: 已经安装了endnotex7,office word2013 word->文件->选项->加载项->最下面的 管理 &q ...
- 虚拟主机的配置、DNS重定向网站
虚拟主机的配置:我用的是localhost本地测试站点+Apache环境 第一步:找到Apache安装目录下的httpd-vhosts.conf文件,然后启用这个文件,如何启用这个文件呢?当然是在ht ...
- 解决linux下javac -version和java -version版本显示不一致
解决linux下javac -version和java -version版本显示不一致 [javascript] view plaincopy [root@localhost usr]# $JAVA_ ...
- WPF(布局)
WPF编程学习——布局 本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面 ...
- Windows下sass的安装
sass依赖Ruby,所以,首先得先安装个Ruby 安装步骤: 1.安装Ruby的时候,勾上Add Ruby executables to your PATH(添加环境变量) 2.安装好Ruby之后, ...
- 路径中“/” "\" "\\"的区别
Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符. Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不 ...
- 3DShader之立方体环境映射(cubic environment mapping)
前面讲了球形环境映射,然而目前采用更多的是立方体环境映射.国际惯例:上图先: 1.反射: 2.折射 3.fresnel(反射+折射) 4.色散 好了,大概讲下原理, 立方体纹理我就不多讲了,它以一个3 ...