程序运行截图如下:

解决此问题的关键是:

父类用一个虚函数返回一个值。

每个子类通过对这个值设置不同的数据。

从而判断不同的类,或不同的对象;

代码如下:

#include <iostream>
#include <vector>
using namespace std;#define ImpleType 0
#define ApiType 1class Base{
public:virtual int getClassType()const = 0;
protected:Base(){}
};class MyImple :public Base{
public:int m_type;MyImple(const int type){m_type = type;}int getClassType()const{return m_type;}
};class MyApi :public Base{
public:int m_type;MyApi(const int type){m_type = type;}int getClassType()const{return m_type;}
};class MyFactory{
public:static Base* createData(int type){Base *base = nullptr;if (type == ImpleType){base = new MyImple(type);}else if (type == ApiType){base = new MyApi(type);}else{}return base;}
};void main(){Base *myData1 = MyFactory::createData(ImpleType);Base *myData2 = MyFactory::createData(ApiType);Base *myData3 = MyFactory::createData(ImpleType);Base *myData4 = MyFactory::createData(ApiType);Base *myData5 = MyFactory::createData(ImpleType);vector<Base*> myVec;myVec.push_back(myData1);myVec.push_back(myData2);myVec.push_back(myData3);myVec.push_back(myData4);myVec.push_back(myData5);for (int i = 0; i < myVec.size(); i++){if (myVec[i]->getClassType() == ImpleType){cout << "第" << i << "个为:MyImple类\n";}elsecout << "第" << i << "个为:MyApi类\n";delete myVec[i];}system("pause");
}

C++工作笔记-根据父类指针获取子类类型(或不同的对象)相关推荐

  1. 父类指针访问子类成员变量

    1.父类指针获取子类成员变量 1 #include <iostream> 2 3 using namespace std; 4 5 class Base { 6 public: 7 vir ...

  2. C语言工作笔记-对函数指针的进一步认识(与回调函数结合使用,并且对比C++的回调)

    目录 背景和基本概念(含与C++回调对比) 函数指针最一般的用法 函数指针结合回调 源码打包 背景和基本概念(含与C++回调对比) 毕业也有10个月了,加上实习已经工作14个月了,感觉这一年多的板砖生 ...

  3. 父类指针指向子类实例,用父类指针调用虚函数,调用的是子类的函数还是父类的函数...

    父类指针指向子类实例,用父类指针调用虚函数,调用的是子类的函数还是父类的函数 以下程序的显示结果是什么,为什么 #include <iostream> using namespace st ...

  4. 父类指针指向子类对象的问题、父类对象和子类对象之间的问题

    一.父类指针指向子类对象 先上代码: class Base {public:void base_fun1() {}virtual void base_fun2() {cout << &qu ...

  5. SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)

    import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type;import com.opensymphony.xw ...

  6. 父类指针指向子类对象,子类指针不能指向父类对象

    class Parent { public:int a };class Child :public Parent { public:int b; }Parent类占内存大小范围:int a; 占4个字 ...

  7. C++工作笔记-对二级指针的进一步理解(获取调用者的地址)

    一般的项目中,如果要获取调用者参数的地址可以考虑使用二级指针. 程序运行截图如下: 源码如下: #include <iostream> #include <conio.h> u ...

  8. C++工作笔记-对二级指针的进一步理解(函数的参数使用二级指针,从而操作原数据)

    二级指针不仅仅可以表示一个二维表(在邻接表里面用得比较多)! 当参数是一级指针的时候得到了是指向了同一个地址! 但参数是二级指针却有不同的效果! 如下代码: main.cpp #include< ...

  9. php 父类中获取子类的名称,php – 在父类中获取子类的名称(静态上下文)

    我正在构建一个重用和简单的ORM库;一切都很好,除了我被一个愚蠢的继承限制.请考虑以下代码: class BaseModel { /* * Return an instance of a Model ...

最新文章

  1. 小晶粒zsm分子筛合成表征实验报告_Nat. Mater.:区域选择性合成亚纳米金属-分子筛材料...
  2. 这篇论文,透露谷歌团队构想的“未来搜索”
  3. 利用ctrl+z停掉任务再kill的暴力方法关闭ctrl+c ctrl+v都关不了的任务
  4. Python数据结构与算法(第六天)
  5. OpenCV 错误级别分析ELA的实例(附完整代码)
  6. Spring源代码研究之how is Bean object created
  7. 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...
  8. C++ queue和priority_queue
  9. 关于C++异常处理的一些思考
  10. Angular CLI 生成项目时css less scss样式使用说明
  11. SyncToy 2.1
  12. 转载:联想小新进入BIOS方法
  13. 其他计算机设备是什么,电脑设备指什么
  14. 不让玩游戏的小娃娃随机考试系统
  15. 那些看着高大上的名词
  16. Centos7+LAMP+owncloud+数据库读写分离
  17. pyecharts将html转换图片,如何把pyecharts的炫酷延续到PPT里?
  18. 总结 : 毕设采访原文呈现
  19. ff14服务器不显示经验加成,《最终幻想14》经验获取与经验加成
  20. 删除字符串中数字字符

热门文章

  1. 远程断点调试不需要跟时间赛跑
  2. 刚进职场的程序员,请万分珍重你的第一份工作,不要轻易辞职!
  3. 【飞秋教程】文件断点续传
  4. 让NUnit轻松支持.NET 2.0
  5. 一个C++程序员生产力,大概相当20个C程序员,200个java程序员?
  6. 设计师妹子问:字体颜色渐变,你能实现?
  7. html表单php连接mysql数据库_使用HTML表单和PHP更新MySQL
  8. 拼装机器人感想_机器人心得体会(20190510062147)
  9. store 存取数据数组对象_如何从Firestore文档中获取对象数组
  10. 导师推荐 | 第 4 期临床基因组家系分析,同时解决科研和临床问题