当前位置:  开发笔记 > 编程语言 > 正文

从指针转换为引用

如何解决《从指针转换为引用》经验,为你挑选了1个好方法。

我有一个通用的Singleton类,我将用于许多单例类.从指针转换为引用时,泛型类会产生编译错误.

错误3错误C2440:'static_cast':无法从'IApp*'转换为'IApp&'

下面是泛型类,instance()函数中出现编译器错误.

template
class Singleton
{
public:

    static DERIVED& instance()
    {
        if (!_instance) {
            _instance = new DERIVED;
            std::atexit(_singleton_deleter); // Destruction of instance registered at runtime exit (No leak).
        }

        return static_cast(_instance);
    }

protected:

    Singleton() {}
    virtual ~Singleton() {}

private:

    static DERIVED* _instance;

    static void _singleton_deleter() { delete _instance; } //Function that manages the destruction of the instance at the end of the execution.

};

有可能这样投吗?我不想instance()返回指针,我更喜欢引用.或者是一个weak_ptr?任何想法如何投这个?



1> Kerrek SB..:

您正在寻找的是使用间接运算符取消引用指针*.你也想要

return static_cast(*_instance);
//                         ^^^^^

要么

return *static_cast(_instance);
//   ^^^^^

或者干脆:

return *_instance;
//   ^^^^^

因为_instance 已经有类型Derived *,上面的两个演员都是无操作.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有