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。 不知道这种情况叫什么?哪里有介绍么?

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

  • 相关阅读:
    java学习之成员内部类
    上海 炉石面试题及解析
    利用RALL机制来事项String类的赋值操作
    关于信号打断正在读取终端的read与select来监视0文件描述符的问题
    ubuntu16.04开机花屏蓝屏解决方案
    gcc 中__thread 关键字的示例代码
    成长、责任和公司的关系
    团队贡献分
    团队如何做决定
    分析app的NABCD
  • 原文地址:https://www.cnblogs.com/winnersun/p/2115398.html
Copyright © 2011-2022 走看看