zoukankan      html  css  js  c++  java
  • 用#pragma once或者条件编译防止类重复定义的一个情景

    最近写了两个类,一个manager类控制子对象,一个UI类是第三方UI的窗口类myui。UI类可以用这个UI的函数画出manager控制的子类的图像。但是为了manager类方便移植修改,所以对子对象的draw方法写在了manager类里,然后调用UI类中的实际的draw方法来完成对子对象的绘制。这样不管在android里或者IOS里或者windows里,只需要修改UI窗口类的draw方法,使用对应系统的draw就可以完成对子对象的绘出。

    那么这种情况就导致了:UI类中有个manager类的实例,所以要include mananer类的.h文件。而manager类里又要有UI类的指针以调用UI类的draw方法,所以也要include UI类的.h文件。那么这就导致了循环引用,系统会报:class manager重定义。此时,就需要在两个.h文件中使用#ifdef #define #endif 或者#prama once来保证只编译一次。

    然后,如果在manager.h中直接包含myui.h,那么系统会报错:使用未定义的类:class manager。解决方法:在manager.h中只能保存myui的父类指针,或者保存一个void *类型的指针,然后在manager.cpp中include myui.h,然后将父类指针或者void *指针转成myui.h。 不知道这种情况叫什么?哪里有介绍么?

    我个人感觉这么做使用的很纠结,是不是我的设计有问题?

  • 相关阅读:
    SSH 密钥类型的的选择
    VMware 默认的虚拟交换机关系与VMnet设置
    路由器端口映射不生效的解决方法
    优先使用对象组合,而不是类继承
    权限管理系统之软件注册模块
    如何正确安装phpDocumentor
    IE下cookie跨域问题
    Linux下Apache无法解析.php文件
    用 memcache 来存储 session
    windows7 下 phpunit 安装
  • 原文地址:https://www.cnblogs.com/winnersun/p/2115398.html
Copyright © 2011-2022 走看看