关于CArchive是无法输出到bool型变量的

     刚刚在做图形学程序的时候,因为要用到保存对象及相关的变量,我写了如下的代码:

    if( ar.IsStoring() )

    {

         ………

        ar<<flag;  //flag是一个bool型变量

    }

   else

   {

       ar>>flag; 

   }

  原本以为这样是对的,但是编译程序的时候才发现这个错误:error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'bool' (or there is no acceptable conversion)。

  查阅资料后才发现CArchive::operator   >>   对bool型没重载。后来我将else里面的代码修改如下:

  else

   {

       int flag;

      ar>>flag;

   }

   程序编译通过了。

   在CSDN上的一篇文章中看到CArchive::operator   >>   对bool型没重载,  必须换成BOOL 。才知道原来BOOL 型变量就是int类型的重定义。bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,原文对CArchive类在MSDN中做了详细的解释,这里不再详述。

以下是原文链接:http://blog.csdn.net/cpu_0dgree/article/details/2044977

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值