KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 109|回复: 0

C++ static_cast

[复制链接]

3

主题

4

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2018-10-27 14:48:30 | 显示全部楼层 |阅读模式
本帖最后由 chengya 于 2018-10-27 15:15 编辑
  1. template <typename T>
  2. class Singleton
  3. {
  4. protected:
  5.         static T* singleton_;

  6. public:
  7.         Singleton(void)
  8.         {
  9.                 singleton_ = static_cast< T* >(this); //正确
  10.         }

  11. };
复制代码
  1. class MyClass : public Singleton<MyClass>{

  2. };

  3. MyClass* Singleton<MyClass>::singleton_ = 0;
复制代码


如上:在模板类中,static_cast进行强制转换没问题,但是在普通类中却编译通不过,提示无法转换
  1. class Singleton
  2. {
  3. protected:
  4.         static MyClass* singleton_;

  5. public:
  6.         Singleton(void)
  7.         {
  8.                 singleton_ = static_cast< MyClass* >(this); //报错
  9.         }
  10. };

  11. class MyClass : public Singleton{

  12. };

  13. MyClass* Singleton::singleton_ = 0;
复制代码

所以 这是为什么呢?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2018-12-10 19:32 , Processed in 0.029604 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表