C和C++混用中出现的问题

    今天由于项目的需要,所以在尝试模拟实现C++的反射机制。其实比较简单,就是类似于MFC那样的机制,用一些宏定义使得类能够通过类名来创建。当然由于实际需求使用了全局map类。

   由于之前对宏的使用不是很熟悉,今天在把侯捷的《深入浅出MFC》翻看了一下,重点看来RTTI那一张。利用宏将这些机制模拟了出来,但是在测试的时候,发现MyRuntimeClass.stype输出总是为null,stype是MyRuntimeClass的一个成员变量,是一个string类型的数据。由于当时对宏还不是很熟悉,所以一直怀疑自己是不是在哪个地方出现了问题,一直没有想过是因为混用了C和C++的问题。我的输出测试语句是:

   printf("%s\n",CMyObject::CMyObjectName.stype);

各种测试,甚至让我怀疑类的static变量的初始化方法。最后花费了很大的时间才总算知道是因为printf是C语言的方法,不知道string这个类的解析方式,所以输出的结果是null,如果将代码的输出方式改为:

  printf("%s\n",CMyObject::CMyObjectName.stype.c_str());

则会出现想要的结果。

  感慨一下自己的粗心,同时感叹一下MFC框架其实本身还是很牛逼的,宏定义用的相当娴熟,侯捷先生的这本书看来还要再好好看看啊。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值